• 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添加更多的内容以及实现真实的跳转。

  • 相关阅读:
    Nokia N78拍照最佳设置!
    摩托Milestone购机鉴别篇
    sdf
    js随笔
    jssip无法识别以数字开始的域
    ASP.NET页面生命周期与优化
    在SQLServer2005中使用全文搜索
    简析正则表达式
    《WCF编程》之错误
    《WCF编程》之实例管理
  • 原文地址:https://www.cnblogs.com/keZhenxu94/p/5288482.html
Copyright © 2020-2023  润新知