UITabBarController block
2015-10-29 11:30
519 查看
1. 标签视图控制器(UITabBarController):
UITabBar:1> 是UITabBarController中下方的工具条 高度49 上面有控制每个子视图控制器的按钮:UITabBarButton 按钮上面的文字及图片由UITabBarController对应子视图控制器的UITabBarItem来设置
2> 属性:tintColor barTintColor....
UITabBarItem:
1> 属性:title image badgeValue(图标上方的提示)
UIAppearance:
[[UINavigationBar appearance]setBarTintColor:[UIColor cyanColor]];
这个将所有的导航栏的颜色都改了
这个网址讲了UIAppearance:
http://blog.sina.com.cn/s/blog_9693f61a0101f1rs.html
tabBarItem.title :控制下方图标的显示文字(控制器中tabBarItem的title:图标下方的文字)
// 红色页面 RedViewController *redVC = [[RedViewController alloc] init]; UINavigationController *naVC = [[UINavigationController alloc] initWithRootViewController:redVC]; naVC.tabBarItem.image = [UIImage imageNamed:@"22-skull-n-crossbones"]; naVC.tabBarItem.title = @"治疗"; naVC.tabBarItem.badgeValue = @"99+";
ITabBarController *tabBarVC = [[UITabBarController alloc] init]; // 设置代理 要先遵循协议:UITabBarControllerDelegate tabBarVC.delegate = self; // 数组元素添加的顺序 决定下面小图标(及控制器界面)显示的顺序 tabBarVC.viewControllers = @[naVC2,naVC,naVC3,naVC4,naVC5,naVC6]; // 要把window的rootViewController设置为tabBarVC self.window.rootViewController = tabBarVC;
tabBar上最多显示5个图标,当超过5个的时候,显示四个,最后一个是more,more里面是剩下没有显示出来的图标,以表格的形式放置
控制控制器上方导航栏的文字:
和tabBarItem.title不是一个属性
self.navigationItem.title = @"红色视图";
2. Block:
block传值的步骤:1> 先在第二个控制器里重定义一个block
2> 声明一个方法 参数类型为block
3> 设置一个属性为block
4> 实现第二步声明的方法
5> 调用之前的写的block 传值
6> 弱指针指向 接收值
第一步:
typedef void(^SendMessageBlock) (NSString *str);
第二步:
- (void)sendMesssage:(SendMessageBlock)block;
第三步:
@property (nonatomic,copy) SendMessageBlock block;
第四步:
- (void)sendMesssage:(SendMessageBlock)block { self.block = block; }
第五步:
self.block(self.textField2.text); [self.navigationController popToRootViewControllerAnimated:YES];
第六步:
// 弱指针指向 __weak ViewController *weakSelf = self; // block传值第六步 [secondVC sendMesssage:^(NSString *str) { weakSelf.textField1.text = str; }];
定义block属性 用copy修饰
在block实现部分:不能直接使用实例变量 self调用属性 因为self的引用计数会+1 然后造成循环引用
可以使用弱指针指向
- (void)tapAction:(UITapGestureRecognizer *)sender {
SecondViewController *secondVC = [[SecondViewController alloc] init];
[self.navigationController pushViewController:secondVC animated:YES];
// 弱指针指向 __weak ViewController *weakSelf = self; // block传值第六步 [secondVC sendMesssage:^(NSString *str) { weakSelf.textField1.text = str; }];
}
相关文章推荐
- How-to: resolve "java.io.NotSerializableException" issue during spark reading hbase table
- Android Bluetooth蓝牙开发(二)
- java uuid生成
- CSS3 Media Queries 片段
- 个人笔记 html 01 实现文字滚动 <marquee>
- [96]Unique Binary Search Trees
- TailQueue详解
- 并查集-- HDU - 4263 Red/Blue Spanning Tree
- 【干货】iOS9的新特性UI Tests
- 借助阿里AntUI元素实现两个Web页面之间的过渡——“Loading…”
- UITextField的总结
- The Dole Queue
- 解决PKIX:unable to find valid certification path to requested target 的问题
- UILabel自动换行和高度自适应
- RequestContext
- 问题:System.Guid.NewGuid();结果:C# System.Guid.NewGuid()
- UITextField内容太靠左边,不美观,添加一个空白的leftView,让它缩进一点
- UIViewController的生命周期及iOS程序执行顺序
- Mysql数据库 hibernate保存数据时,Mysql主键需设定自增,否则报错!(Field 'id' doesn't have a default value)
- Qt的gui编程是,点击一次button出现两次action