iOS多界面设计杂谈

判断程序首次启动

  • 利用NSUserDefaults,还能够判断程序的首次启动,方法是在AppDelegate.m文件中找到:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  • 该方法是UIApplication的协议方法,定义在AppDelegate类中,在程序每次启动以后被调用。在该方法中定义NSUserDefaults单例,可用任意键值判断是否为首次启动,由于在首次启动时还未创建任何键值,代码以下:
NSUserDefaults *launchSettings=[NSUserDefaults standardUserDefaults];
    if([launchSettings boolForKey:(@"hasLaunched")]==NO) {
        [launchSettings setBool:(YES) forKey:(@"hasLaunched")];
        [launchSettings setBool:(NO) forKey:(@"nightShiftOpen")];
    }
  • 其中if语句的条件若是成立就表明是首次启动,可加入欢迎页和新手提示等内容。

深刻理解UITabBarController各页面的生命周期

  • UITabBarController是最经常使用的布局方式,要注意在启动时只有第一个页面会被加载,其余页面不会被加载。同时再次切换到每一个页面的时候对应UIViewController的viewDidLoad方法不会被调用,不能把须要实时刷新的语句放入其中。不过能够利用方法:
- (void)viewWillAppear:(BOOL)animated

该方法是页面即将出现的时候被调用,可放入实时刷新的语句,例以下面的例子是简易的夜间模式的实现:app

- (void)viewWillAppear:(BOOL)animated {
    BOOL isOpenNightShift=[_userSettings boolForKey:(@"nightShiftOpen")];
    if(isOpenNightShift==YES) {
        self.tableView.backgroundColor=[UIColor blackColor];
        self.navigationController.navigationBar.backgroundColor=[UIColor blackColor];
    }
    else {
        self.tableView.backgroundColor=[UIColor whiteColor];
        self.navigationController.navigationBar.backgroundColor=[UIColor whiteColor];
    }
}

视图控件监听方法的两种绑定方式

  • 关于视图控件监听方法的绑定,在包含StoryBoard或者xib文件的程序中,能够经过纯拖拽来实现,无需编写代码:只须要选择控件并按住control按钮进行拖拽,便可添加IBAction监听器方法。
  • 可是在UITableView的使用中,UITableViewCell是要求作到重用(reusable)的,包含在Cell中的控件在StoryBoard中没有对应的控件(例如Cell的accessoryView中的控件)。这时应该采用手动绑定的方式,先定义控件变量,例如在某UIViewController的@Interface中有以下定义:
@property (strong,nonatomic) UISwitch *nightShiftOpen;
  • 而后在viewDidLoad方法中,为该控件申请控件并添加监听器
if(_nightShiftOpen==nil) {
       _nightShiftOpen=[[UISwitch alloc]init];
    }
    [_nightShiftOpen addTarget:(self) action:(@selector(nightShiftOpenValueChanged:)) forControlEvents:(UIControlEventValueChanged)];
  • 其中nightShiftOpenValueChanged:是绑定的方法的名称,而UIControlEventValueChanged是事件的类型,此处类型为控件值的改变。

而后在对应的UIViewController中实现监听器方法,此处实现的是夜间模式开关的监听:布局

- (void)nightShiftOpenValueChanged:(id)sender {
    if([_nightShiftOpen isOn]==YES) {
        [_userSettings setBool:(YES) forKey:(@"nightShiftOpen")];
        self.tableView.backgroundColor=[UIColor blackColor];
        self.navigationController.navigationBar.backgroundColor=[UIColor blackColor];
    }
    else {
        [_userSettings setBool:(NO) forKey:(@"nightShiftOpen")];
        self.tableView.backgroundColor=[UIColor whiteColor];
        self.navigationController.navigationBar.backgroundColor=[UIColor whiteColor];
    }
    [_userSettings synchronize];
}
  • 这样在该UISwitch控件值改变时,会自动调用上面的方法。
相关文章
相关标签/搜索