• UI: 使用 UINavigationController 实现导航


      导航控制器,它允许你 push 视图控制器到一个栈中,并可以将视图控制器从栈中 pop 出来,在栈顶的视图控制器是 top 视图控制器,用户可以看到这个视图控制器。也只有 top 视图控制器能被用户看到,可以通过将其 pop 出,或者 push 另外一个视图控制器到栈中进行改变。 

       

    使用导航控制器的 initWithRootViewController:的方法对其初始化,把根视 图控制器当做它的参数。然后将导航控制器的 view 添加到 windows: 

     .h:

    #import <UIKit/UIKit.h>
    
    @interface AppDelegate : UIResponder <UIApplicationDelegate>
    
    @property (strong, nonatomic) UIWindow *window;
    
    @property (nonatomic, strong) UINavigationController *navigationController;
    
    @end

    .m

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        
        ViewController *mainVC = [[ViewController alloc]init];
        //self.window.rootViewController = mainVC;
        
        self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];
        [self.window makeKeyAndVisible];
        self.navigationController = [[UINavigationController alloc]initWithRootViewController:mainVC];
        [self.window addSubview:self.navigationController.view];
        return YES;
    }
    创建第二个视图控制器 SecondViewController 

     我计划在第一个视图控制器出现在屏幕上 5 秒后把第二个视图控制器 push 到它的顶部 :

    在第一个视图中:

    //推出第二个视图
    - (void) pushSecondViewController{
        SecondViewController *secondController = [[SecondViewController alloc]init];
        [self.navigationController pushViewController:secondController animated:YES];
    }
    
    - (void) viewDidAppear:(BOOL)animated{
        [super viewDidAppear:animated];
        //5s后调用pushSecondViewController方法
        [self performSelector:@selector(pushSecondViewController) withObject:nil afterDelay:5.0f];
    }
    从导航控制器堆栈 pop 或者移出一个视 图控制器要如何处理呢?答案很简单:使用导航控制器中 popViewControllerAnimated:的方 法,在第二个视图控制器显示在屏幕上 5 秒钟后我们把它自动的 pop 出栈: 
    - (void)viewDidAppear:(BOOL)animated{
        [super viewDidAppear:animated];
        
        [self performSelector:@selector(goBack) withObject:nil afterDelay:5.0f];
    }
    
    - (void)goBack{
        [self.navigationController popViewControllerAnimated:YES];
    }
  • 相关阅读:
    pip install 报错xcrun: error: active developer path ("/Applications/Xcode.app/Contents/Developer") does not exist
    python virtualenv安装并指定python版本
    python安装ldap报错
    linux服务查看安装目录
    python利用paramiko执行服务器命令
    Python subprocess模块
    Django定义全局变量
    uwsgi: invalid option -- 'x'
    将博客搬至CSDN
    jpeg图片格式编解码移植(1)
  • 原文地址:https://www.cnblogs.com/safiri/p/4018549.html
Copyright © 2020-2023  润新知