-
事件响应
- 子视图如果绑定了事件即优先级最高 如果没有则触发父视图的事件
- 子视图接收到了事件后可以放弃事件响应 触发父视图的事件
例子:
UITapGestureRecognizer* gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(pressAct:)]; self.con.userInteractionEnabled = YES; gesture.numberOfTapsRequired = 1; gesture.numberOfTouchesRequired = 1; [self.con addGestureRecognizer:gesture]; - (void)pressAct:(UITapGestureRecognizer*)ges{ //每个UIBiew对象都有一个nextResponder方法 放弃当前事件响应 [ges.view nextResponder]; }
-
导航控制器
- 创建导航控制器
//创建一个根视图控制器 UIViewController* root = [[ViewController alloc] initWithNibName:@"VCxib" bundle:[NSBundle mainBundle]]; //创建导航控制器 托管视图控制器 UINavigationController* nav = [[UINavigationController alloc] initWithRootViewController:root]; //将导航控制器作为视图的根控制器 self.window.rootViewController = nav;
- 自定义当前导航元素项
// navigationItem代表当前导航元素项对象 可以设置按钮 标题等一系列东西 self.navigationItem.title = @"home"; // 自定义一个按钮视图作为导航按钮 UIButton* btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; btn.frame = CGRectMake(0, 0, 100, 30); btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; [btn setTitle:@"hello" forState:UIControlStateNormal]; // UIbarButtonItem可以创建系统带的 也可以自定义一个视图作为按钮 self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:btn]; // 系统自带按钮类型风格也会经常用 self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(pressRight)];
-
navigationBarHidden = YES;可以隐藏导航栏
-
注:self.navigationController中可以获取到item bar controller对象
-
navigationController.navigationBar.translucent = NO;表示导航栏不透明 默认为YES
-
导航控制器界面切换
-
在创建窗口时用navigationController中托管了一个视图控制器 当该视图
控制器转跳到另一个页面时 需要用[self.navigationController pushViewController:$新视图控制器 animated:YES];
navigationController会绑定在每一个被托管的视图控制器中 所以可以直接调用 -
导航控制器的底部工具栏
-
底部工具栏默认是隐藏的 需要用手动显示开启出来self.navigationController.toolbarHidden = NO;
-
注意:开启底部工具栏会使所有导航页面都显示底部导航栏 隐藏的话需要再设置为YES; 另外在退回导航页面时不会调用didload 所以以防不显示底部工具栏需要在事件中做好判断
-
每个导航页面有一个toolbaritems 需要一个按钮数组
//例子: self.navigationController.toolbarHidden = NO; UIBarButtonItem* bottomBar = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(pressRight)]; // 创建自动布局的占位按钮(不会显示出来 自动计算等分布局) UIBarButtonItem* spaceBar = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; self.toolbarItems = @[spaceBar,bottomBar,spaceBar];
- UIPickerView(选择器)
- 需要实现两个代理类(<UIPickerViewDelegate,UIPickerViewDataSource>)
- 需要设置对象的代理
picker.delegate = self;
picker.dataSource = self;
//还需要实现dataSource代理类的两个方法
//指定有几组选择组
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 3;
}
//指定每组有几行选择项
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
//此处可以根据component组号返回不同行数
return 10;
}
//指定每项的名称 row和component都是从0开始
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
return [NSString stringWithFormat:@"%li行%li列",row+1,component+1];
}
//当选择框选择新的选择项时触发
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
NSLog(@"%li行%li列",row+1,component+1);
//重新赋值选择框个数
count = 2;
//重新设置选择框代理个数据源代理 以刷新出新数据
picker.delegate = self;
picker.dataSource = self;
}
网友评论