iOS学习笔记-微博2-添加导航功能

1.在tabBar控制器上添加导航控制器 导航控制器要想显示标题依赖于子控制器
之前的子控制器是我们自定义的tabBarcontroller导致我们只能切换四个页面,不能设置导航,
为了添加导航控制器所以要把传进来的childVc包装一层导航控制器并且让导航控制器成为我们tabBarcontrolle的子控制器创建好后导入头文件 把UINavigationController换成自定义的导航ZHNavigationController
图片如下: 这里写图片描述

 1.1在ZHTabBarViewController.m文件中修改如下代码
ZHNavigationController *nav = [[ZHNavigationController alloc] initWithRootViewController:childVc];

[self addChildViewController:nav];

1.2设置导航标题 在写好的封装方法里添加如下代码

childVc.title = title;

2.导航控制器设置好后我们在home的控制器里实现tableview的方法 设置cell的数据演示一下导航功能
在ZHHomeViewController.m添加如下代码

//有多少行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return 20;
}
// 每行的内容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *identifier = @"cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
    }
    cell.textLabel.text = [NSString stringWithFormat:@"首页测试数据%lu",indexPath.row];
    return cell;
}
//点击某一行 都响应
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   //1设置一个跳转的页面  
    UIViewController *newVc = [[UIViewController alloc] init];
    //跳转后控制器的颜色
    newVc.view.backgroundColor = [UIColor greenColor];
    //跳转后控制器的导航标题
    newVc.title = @"新控制器";
//拿到我们当前控制器的导航然后执行跳转
    [self.navigationController pushViewController:newVc animated:YES];

}

2.1 这样写有BUG 当跳转到下个页面的时候底部的tabBar不消失,在跳转到新控制器后还可以点击其他页面的控制器
要设置新控制器的属性hidesBottomBarWhenPushed 隐藏底部条

   //当push这个控制器的时候就自动隐藏底部的tabBar
    newVc.hidesBottomBarWhenPushed = YES;

3.以后消息,发现,我,这三个控制器里也要添加跳转操作所以要把这个拦截push的方法写到自定义的的导航文件里

//能拦截所有push进来的子控制器的方法
-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
//如果什么都不写 就什么也不显示来所以要先调用父类的方法
    //拦截所有的push方法 如果这样直接添加 我们一点开app下面的tabBar就消失来所以要判断
    if (self.viewControllers.count > 0) {
        //如果现在push的不是栈低控制器(最先push进来的控制器)
        viewController.hidesBottomBarWhenPushed = YES;
    }
    [super pushViewController:viewController animated:animated];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值