zoukankan      html  css  js  c++  java
  • iOS开发(Swift):创建UINavigationView的三种方法

    UINavigationController是iOS开发中很常用的一种组件,由于种种原因许多人喜欢从代码创建视图控件,包括UINavigationController,但是有时候我们的屏幕控件太多,一方面使用storyboard可以方便设计,但是另一方面又需要用代码创建UINavigationController来灵活控制程序运行,下面将分别介绍代码,IB和两者结合创建一个UINavigationController的方法:

    1.代码创建UINavigationController

    新建一个SingleView项目,将AppDelegate.swift文件中application:didFinishLaunchingWithOptions:方法修改如下,注意原来的window为optional类型,为了方便可以改为var window: UIWindow!,表示window值我们会赋值。然后创建一个根视图控制器rootViewController,一个导航控制器navigationController。

        var window: UIWindow!
        var rootViewController: UIViewController!
        var navigationController: UINavigationController!
    
    
        func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
            // Override point for customization after application launch.
            
            window = UIWindow(frame: UIScreen().bounds)
            window.makeKeyAndVisible()
            
            rootViewController = UIViewController()
            navigationController = UINavigationController(rootViewController: rootViewController)
            
            window.rootViewController = rootViewController
            window.addSubview(navigationController.view)
            
            return true
        }
    
    application:didFinishLaunchingWithOptions:函数中初始化以上三个变量,将window设置为活动窗口并可见,使用rootViewController创建navigationController,把navigationController的视图添加到window中。

    到此,运行程序可见到如下界面。见到如图上部分的导航条即表示成功创建NavigationController。

    由于该rootViewController通过rootViewController = UIViewController()初始化,所以该界面一片漆黑,接下来我们把初始化rootViewController的语句改改。

    在新建项目时,Xcode生成了一个ViewController类,我们可以使用该类来初始化,把上面rootViewController = UIViewController()改成rootViewController = ViewController(),然后到ViewController类中,将viewDidLoad函数修改如下:

        override func viewDidLoad() {
            super.viewDidLoad()
    
            self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "下一个", style: UIBarButtonItemStyle.Plain, target: self, action: "next:")
        }
    并添加一个函数如下

        func next(sender: AnyObject) {
            println("跳转")
        }
    再次运行程序,应该可以看到控制台打印 跳转 两个字,能够执行next函数,意味着可以进行视图跳转。下次我们将为NavigationController添加更多内容,让他们能在不同视图跳转,但是现在我们继续看看另一种创建NavigationController的方法。

    2.IB创建UINavigationController

    IB创建UINavigationController确实也是很方便,新建一个SingleView App,打开Main.storyboard,点击菜单Editor->Embed In->Navigation Controller,即可完成,界面如下

    这样,一个NavigationController就创建好了,那么要实现跳转,首先当然要有按钮,到Object库中拖一个Bar Button Item到上图右侧的导航栏处



    到此通过IB创建NavigationController也实现了。接下来就是两者结合的时候了。

    3.通过代码连接Storyboard创建NavigationController。

    首先创建一个SingleView App,打开storyboard,随便设计布局,接下来我们将连接该storyboard。

    由于代码中需要引用,因此同样到AppDelegate中添加以下三个变量

        var window: UIWindow!
        var rootViewController: UIViewController!
        var navigationController: UINavigationController!

    但是在application:didFinishLaunchingWithOptions函数中我们将使用storyboard来创建rootViewController,修改application:didFinishLaunchingWithOptions函数如下:

        func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
            
            window = UIWindow(frame: UIScreen.mainScreen().bounds)
            window.makeKeyAndVisible()
            
            var storyboard = UIStoryboard(name: "Main", bundle: nil)
            rootViewController = storyboard.instantiateViewControllerWithIdentifier("MyViewController")
            
            navigationController = UINavigationController(rootViewController: rootViewController)
            
            window.rootViewController = rootViewController
            window.addSubview(navigationController.view)
            
            
            return true
        }
    
    同样我们初始化window,navigationController,但是rootViewController我们是使用storyboard来初始化的,

    var storyboard = UIStoryboard(name: "Main", bundle: nil) 首先根据名字Main获得storyboard的引用,

    rootViewController = storyboard.instantiateViewControllerWithIdentifier("MyViewController") 然后从storyboard根据Identifier实例化rootViewController,既然要根据Identifier,因此我们回到storyboard文件为其添加ID。

    打卡storyboard文件,点击界面空白处或点击上面三个图标的最左边,选择View Controller



    打开Inspector,添加Storyboard ID:MyViewController




    到此,通过storyboard设计界面,代码连接创建NavigationController就完成了,下一次我们将为NavigationController添加更多的内容以及实现真实的跳转。

  • 相关阅读:
    Mac上的USB存储设备使用痕迹在新版操作系统有所变化
    Beware of the encrypted VM
    A barrier for Mobile Forensics
    Second Space could let suspect play two different roles easily
    Take advantage of Checkra1n to Jailbreak iDevice for App analysis
    Find out "Who" and "Where"
    Where is the clone one and how to extract it?
    Downgrade extraction on phones running Android 7/8/9
    高版本安卓手机的取证未来
    How to extract WeChat chat messages from a smartphone running Android 7.x or above
  • 原文地址:https://www.cnblogs.com/keZhenxu94/p/5288482.html
Copyright © 2011-2022 走看看