导航 navigationbar 与 tabbar

1.导航类型

UINavigationController 适用于父子页面的跳转

UITabBarController 适用于平级页面的跳转

2.presentViewController / dismissViewControllerAnimated和pushViewController / popViewController

(1)只有从UINavigationController导航过来的UIViewController 才可以使用pushViewController / popViewController,从其它导航进入的只能使用presentViewController / dismissViewControllerAnimated

(2)如果A界面是通过presentViewController进入的,那么在A界面里只能使用presentViewController导航,如果A界面是通过UINavigationController包装了一层进入,则可使用pushViewController导航。

(3)如果A界面是一个UITabBarController,进入时是通过presentViewController来导航的,那么子Tab里也只能通过presentViewController来导航,如果进入时是通过UINavigationController包装了一层进入,则可使用[self.tabBarController.navigationController pushViewController:abcdViewController animated:true];这种方式导航。

3.修改UINavigationController导航进入后导航栏的图标及文字

UIBarButtonItem* leftBar = [[UIBarButtonItem alloc]initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:self action:@selector(homeBack)];

self.navigationItem.leftBarButtonItem = leftBar;

//可添加多个导航按钮

//    self.navigationItem.leftBarButtonItems = nil;

//同样右边的导航按钮也可以设置

4.创建UITabBarController时需注意,要先创建出来,然后通过UINavigationController包装后才能显示,否则tab子项不显示。创建格式如下

Java代码  

  1. TabOneViewController* oneVC = [[TabOneViewController alloc]init];
  2. oneVC.view.backgroundColor = [UIColor whiteColor];
  3. UITabBarItem* item1 = [[UITabBarItem alloc]initWithTitle:@"tab1" image:nil tag:0];
  4. oneVC.tabBarItem = item1;
  5. TabTwoViewController* twoVC = [[TabTwoViewController alloc]init];
  6. UITabBarItem* item2 = [[UITabBarItem alloc]initWithTitle:@"tab2" image:nil tag:1];
  7. twoVC.tabBarItem = item2;
  8. HomeViewController* homeVC = [[HomeViewController alloc]init];
  9. NSArray* array = [[NSArray alloc]initWithObjects:oneVC,twoVC, nil];
  10. homeVC.viewControllers = array;
  11. UINavigationController* navVC = [[UINavigationController alloc]initWithRootViewController:homeVC];
  12. [self presentViewController:navVC animated:YES completion:^{}];
  13. //下面这种创建了HomeViewController后,HomeViewController下的子Tab不能通过push或者pop导航
  14. //    HomeViewController* homeVC = [[HomeViewController alloc]init];
  15. //    [self presentViewController:homeVC animated:YES completion:^{}];

5.UITabBarController各页面之间的切换

实现UITabBarControllerDelegate协议

//实现协议方法,用于切换Tab时,更改页面的标题
-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    NSInteger index = tabBarController.selectedIndex;
    NSString *title;
    switch (index) {
        case 0:
            title = @"Message";
            break;
        case 1:
            title = @"User List";
            break;
    }
    self.title 

参考文章:http://www.tuicool.com/articles/J7nIVbN

时间: 2024-11-13 09:41:59

导航 navigationbar 与 tabbar的相关文章

UIScrollView UITableView 上拉隐藏导航栏和tabbar 下拉显示导航栏和tabbar

//UIScrollView  UITableView 上拉隐藏导航栏和tabbar 下拉显示导航栏和tabbar-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{ CGPoint translation = [scrollView.panGestureRecognizer translationInView:scrollView.superview];    if

设置导航栏和TabBar标题的文字格式

//TabBar样式 [navi.tabBarItem setTitleTextAttributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:13],NSForegroundColorAttributeName:[UIColor colorWithRed:64/255.0 green:101/255.0 blue:169/255.0 alpha:1]} forState:UIControlStateNormal]; //更改导航标题字

iOS去除导航栏和tabbar的1px横线

1.在自己定义的导航栏中或者设计稿中经常需要去除导航栏的1px横线,主要是颜色太不协调了 去除之前的图片 要去除这1px的横线,首先应该知道它是什么,在Xcode的界面调试中可以看到,它其实是UIImageView来的 找到横线是什么了··· 其实这是navigationBar的shadowImage,所以只要设置它为空即可,但是设置它为空之前应该先设置它的背景也为空,全部代码如下: [self.navigationController.navigationBar setBackgroundIm

iOS去除导航栏和tabbar的横线

导航[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; [self.navigationController.navigationBar setShadowImage:[UIImage new]]; 导航透明设置  [self.navigationController.navigationBar setTranslucent:NO

iOS navigationBar和tabBar变透明 & navigationBar根据滑动距离的渐变色实现

navigationBar变为纯透明 //第一种方法 //导航栏纯透明 [self.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; //去掉导航栏底部的黑线 self.navigationBar.shadowImage = [UIImage new]; //第二种方法 [[self.navigationBar subviews] objectAtIndex:0].alpha =

关于一些特定的自定义导航栏,tabBar,向上滑动可隐藏的代码

有些按钮在底部SCrollView滑动的时候却是不动的,原理是加在self.view上,再用 bringSubviewToFront 函数讲其层级调为最上层.导航栏位置的按钮就用 [self.navigationController.navigationBar bringSubviewToFront:btn2]; 进入一个页面如果想让导航栏透明,消失.注意,如果在导航栏透明状态下推出一个新的页面,导航栏的透明属性会带过去. 这个时候需要在新页面的viewWillApper里边重新定义导航栏属性.

微信小程序添加底部自定义导航栏(tabBar)

tabBar参数说明参考: 官网文档 具体配置: 1.在app.json中添加你的自定义导航栏信息(名字,点击前图片,点击后图片,要跳转的界面等等) 注意事项:tabBar最多五个 参考示例: "tabBar": { "color": "#8a8a8a", "selectedColor": "#937bf5", "list": [ { "iconPath": &quo

自定义底部导航栏(tabBar)

前言如果大家用过微信提供的tabBar就会发现,他的tabBar有很大的局限性.暂且不说样式局限性了,他提供的app.json配置文件中没有function.这也就意味着使用它提供的这个组件,你只能用于跳转页面,不能干其它的事情 我YY的 以下是代码说明:小程序的很大异步分思想体现了封装,以提高复用性.对此,一些简单代码我也封装了,考虑到了以后维护的方便性目录结构如下: 图片配置文件:imgURI.js(由于小程序不支持xml和读取本地json,故用js代替) 1 var host="/img/

32.怎样在Swift中实现TabBar和导航视图结合的项目?

导航栏和TabBar结合的项目,在我们平常开发中会经常看到,下面我们通过自定义的TabBar来实现一个导航和TabBar结合的Demo. 1.自定义TabBar import UIKit class GofTabBarController: UITabBarController { override func viewDidLoad() { super.viewDidLoad(); addTabBarChildViewController(GofMainViewController(), tit