【问题标题】:How do i add add a navigation controller to a xib如何将导航控制器添加到 xib
【发布时间】:2012-12-18 11:30:20
【问题描述】:

在我找不到任何关于如何为 xibs 执行此操作的教程之前,我只使用 storyords 子类化导航控制器。

如何将导航控制器添加到某个 xib 以便我可以对其进行子类化?然后我可以覆盖我的视图的旋转。我坚持的部分是视图控制器如何知道导航控制器?在情节提要中,我会手动将其连接到我的视图控制器。我只是不能用 xibs 解决它?

我在视图 xib 旁边添加了一个导航控制器...现在我需要从这里获得一些建议。

我还从我原来的 iPhone xib 创建了 iPad 视图。当我从 IB 拖动导航控制器时,它仍然是 iPhone 屏幕大小?

【问题讨论】:

    标签: objective-c ios xcode cocoa-touch


    【解决方案1】:

    您不需要像使用情节提要一样在 xib 文件中设置 UINavigationController,因为 xib 仅代表一个屏幕。正常的做法是分配/初始化UINavigationControllerUIViewController,并在显示之前将视图控制器设置为导航控制器的根。如果您希望从一开始就将整个应用程序包装在导航控制器中,则可以在 App Delegate 中完成此操作。

    在非故事板应用程序的应用程序委托中,您会想要这样的东西

    self.navigation = [[UINavigationController alloc] initWithRootViewController:[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]];
    
    [self.window makeKeyAndVisible];
    
    self.window.rootViewController = self.navigation;
    

    其中self.navigation 是属于 App Delegate 的 UINavigationController 属性或 iVar。如果您想在 xib 中正确设置视图控制器,请在 xib 中选择根视图并打开属性检查器(RHS,看起来像一个小盾牌的那个)并在“顶部栏”中选择“导航栏”下拉式菜单。这将在 xib 中显示导航控制器顶部栏,以便您可以相应地定位其他视图。

    编辑

    这不完全正确,您可以在 xib 文件中创建导航控制器,但我一直认为它比它的价值更麻烦,因为它的视觉元素非常少,而且它们可以在代码中设置很容易。

    本教程的更多信息在这里

    http://www.iosdevnotes.com/2011/03/uinavigationcontroller-tutorial/

    【讨论】:

    • 感谢您的回答,有道理。我实际上已经在我的应用程序委托中设置了我的导航,我试图覆盖 iOS 6 的自动旋转以获取一些视图。通常 id 只是用我在情节提要中的方法对导航控制器进行子类化,但对 xibs 不确定。
    • 作为旁注,它的子类化 UINavigationController 通常是不鼓励的。讨论这个话题here
    • @Ryan,公平点,那么我如何在不使用 iOS 6 中自己的方法子类化导航控制器的情况下覆盖旋转,因为如果不为我这样做似乎没有任何作用?
    • 然后按钮事件没有成功
    【解决方案2】:

    如果你想覆盖导航控制器的旋转,只需创建一个覆盖旋转方法的 UINavigationController 子类,然后使用 P-double 的代码,而不是调用 [UINavigationController alloc],你应该调用类似 [MyNavigationController alloc] 的东西,多亏了面向对象编程的奇迹,它应该可以完美地工作。

    【讨论】:

    • 这实际上是我试图实现的目标,在故事板 id 中,只需添加一个导航控制器并使用我在 ios 5 和 6 中处理旋转的方法对其进行子类化,但是使用 xibs 我不知道该怎么做它?什么是P-双码?我的导航控制器代码在我的委托中,我只需要覆盖几个屏幕,iOS 6 屏幕旋转已经引发了工作!
    • 在情节提要中,您可以更改导航控制器的类。选择它并在 Utilities 编辑器(右侧)中选择 Identity Inspector (cmd+alt+3),您可以将类类型更改为您的自定义类。
    • 但是我的问题的重点是我没有使用故事板,这就是问题所在,我不知道在使用 xibs 时如何实现这一点
    • 它的工作方式相同。打开主窗口的 XIB 或包含导航控制器的任何 XIB,并在那里设置类。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多