【问题标题】:How to do UINavigationController programmatically?如何以编程方式执行 UINavigationController?
【发布时间】:2015-03-14 10:20:01
【问题描述】:

通常,在情节提要中,我总是使用编辑器 -> 嵌入式导航控制器

这段代码也一样吗?

myNavigationController = UINavigationController(rootViewController: myController)

但问题是您如何像在情节提要中一样附加导航控制器?

【问题讨论】:

    标签: ios xcode swift


    【解决方案1】:

    您应该将导航控制器设置为主要UIWindowrootViewController

    如果您完全以编程方式创建界面,通常在您的应用委托 application:didFinishLaunchingWithOptions: 中创建主 UIWindow 和主导航控制器,然后将后者分配给前者的 rootViewController 属性。

    class AppDelegate: UIResponder, UIApplicationDelegate {
    
      var window: UIWindow?
      var navigationController: UINavigationController?
    
      func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
    
        self.navigationController = UINavigationController()
    
        var viewController: UIViewController = UIViewController()
        self.navigationController.pushViewController(viewController, animated: false)
    
        self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
        self.window.rootViewController = self.navigationController
    
        ...more initialisation...
    
        self.window.makeKeyAndVisible()
    
        return true
      }
    }
    

    编辑:

    在评论中回答你的问题:

    当我从编辑器创建导航控制器时是否相同 -> 嵌入导航控制器?我的意思是,如果我从编辑器-> 嵌入导航控制器中执行操作,它会产生与我以编程方式执行的结果相同的结果吗?

    这取决于你如何看待它。从用户的角度来看,我会说,是的。从程序员的角度来看,我不会说,因为情节提要会生成一堆其他对象(与场景、转场等相关)

    换句话说,如果你只关心创建一个导航视图控制器并附加到你的窗口,故事板会像我上面概述的那样做(加上我之前提到的一堆东西,这些东西不会改变“附加”的最终结果,只是这样做的方式)。

    如果您的意思是要重新创建与故事板中创建的设置完全相同的设置,我认为您不能以编程方式创建新的故事板场景,因为 Apple 不会公开所有相关类。

    【讨论】:

    • 那么当我从编辑器创建导航控制器时是否相同 -> 嵌入在导航控制器中?我的意思是,如果我从编辑器执行 -> 嵌入导航控制器,它会产生与我以编程方式执行的结果相同的结果吗?
    • 请看我的编辑。此外,也许您询问的最终目的并不完全清楚。如果我的回答没有帮助,请考虑清楚为什么你要问这个:只是好奇?你有什么具体的任务吗?
    猜你喜欢
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    • 2014-04-11
    • 2018-06-26
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    相关资源
    最近更新 更多