【发布时间】:2013-03-15 16:28:10
【问题描述】:
我在 NavigationController 中有一个 UIPageViewController,并且 UIPageViewController 提供的其中一个 ViewController 需要能够向导航栏添加一个“保存”按钮。
问题是我找不到对导航栏的任何访问权限,因此我设置了一个断点并开始对其进行挖掘,但我似乎无法找到对 NavigationController 或其属性的访问权限的位置。
这是我发现的:
(lldb) po self.toolbarItems
$9 = 0x00000000 <nil>
(lldb) po self.parentViewController
$10 = 0x1e070bc0 <UIPageViewController: 0x1e070bc0>
(lldb) po self.parentViewController.toolbarItems
$11 = 0x00000000 <nil>
(lldb) po self.parentViewController.navigationController
$12 = 0x00000000 <nil>
(lldb) po self.parentViewController.view
$13 = 0x1d585960 <_UIPageViewControllerContentView: 0x1d585960; frame = (0 0; 320
416); clipsToBounds = YES; opaque = NO; autoresize = W+H; layer = <CALayer:
0x1d5a1090>>
(lldb) po self.parentViewController.view.window
$14 = 0x1e073750 <UIWindow: 0x1e073750; frame = (0 0; 320 480); layer =
<UIWindowLayer: 0x1e0756a0>>
(lldb) po self.parentViewController.view.window.rootViewController
error: property 'rootViewController' not found on object of type 'id'
error: 1 errors parsing expression
(lldb) po self.presentingViewController
$15 = 0x00000000 <nil>
我尝试在我的 VC 和父 VC 中设置我的 rightBarButtonItem,甚至尝试转到 topViewController 和 rootViewController。
任何人都可以就我在哪里可以访问 NavigationController 提供任何其他建议吗?
【问题讨论】:
-
唯一正确的方法是
self.navigationItem.rightBarButtonItem = ...。如果它对您不起作用,请确保您的 VC 在 NavigationController 层次结构中。 -
谢谢马克,但棘手的部分是我的 UIPageViewController 在层次结构中,它正在加载我需要保存按钮的 VC。所以从技术上讲,我的 VC 不在层次结构中,但它是由不是的东西加载的。我可能不得不把按钮放在别的地方。
标签: ios objective-c uinavigationcontroller uibarbuttonitem uipageviewcontroller