6.5 添加本地通知
书中没有提到申请通知权限,方法如下
add this code, it will show a alert view to ask user for permission.
1 2 3 4 5 6 7
| if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]) { [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeSound|UIUserNotificationTypeBadge categories:nil]]; }
|
6.7 与视图控制器及其视图进行交互
视图控制器的生命周期方法(lifecycle method):
application:didFinishLaunchingWithOptions:在该方法中设置和初始化应用窗口的根视图控制器。该方法只会在应用启动完毕后调用一次。
initWithNibName:bundle:该方法是UIViewController的指定初始化方法,创建视图控制器时,就会调用该方法。请注意,某些情况下,需要在同一个应用中创建多个相同的UIViewController子类对象,每次创建一个该类的对象时,都会调用一次该类的initWithNibName:bundle:方法。
loadView:可以覆盖该方法,使用代码方式设置视图控制器的view属性。
viewDidLoad可以覆盖该方法,设置使用NIB文件创建的视图对象。该方法会在视图控制器加载完视图后被调用。
viewWillAppear:可以覆盖该方法,设置使用NIB文件创建的视图对象。该方法和
viewDidAppear:会在每次视图控制器的view显示在屏幕上时被调用;相反,
viewWillDisappear:和viewDidDisappear:方法会在每次视图控制器的view从屏幕上消失时被调用。
6.9 中级练习:控制逻辑
查文档不懂,这是个大问题,有待提高看文档具体怎么组织的能力。Stack Overflow 的答案运行崩溃,没有理解原理,mainSegmentControl:
方法没有声明。最后还是去 BNR论坛 找到了答案。
熟悉文档浏览 UIColor,其实也是不很精通颜色,但是还是大部分看懂了,也了解了目录结构和对应文本的样式。
GWHypnosisViewController.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. NSLog(@"GWHypnosisViewController loaded its view.");
// 初始化UISegmentedControl,设置大小和颜色 UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:@[@"Red", @"Green", @"Blue"]]; segmentedControl.frame = CGRectMake(0, 0, 250, 50); segmentedControl.tintColor = [UIColor blackColor]; // 注册UISegmentedControl [segmentedControl addTarget:self.view action:@selector(mainSegmentControl:) forControlEvents: UIControlEventValueChanged]; // 添加到视图 [self.view addSubview:segmentedControl]; }
|
GWHypnosisView.h
1 2 3
| - (void)mainSegmentControl:(UISegmentedControl *)segment;
|
GWHypnosisView.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| // mainSegmentControl: 方法用来接受 UISegmentedControl 发的消息 - (void)mainSegmentControl:(UISegmentedControl *)segment { if(segment.selectedSegmentIndex == 0) { // action for the first button (Current or Default) self.circleColor = [UIColor redColor]; } else if(segment.selectedSegmentIndex == 1) { // action for the second button self.circleColor = [UIColor greenColor]; } else if(segment.selectedSegmentIndex == 2) { // action for the third button self.circleColor = [UIColor blueColor]; } }
|