【问题标题】:use the same UINavigationBar object in all children views在所有子视图中使用相同的 UINavigationBar 对象
【发布时间】:2012-08-06 00:11:03
【问题描述】:

您好,我正在开发一个 ios 应用程序,并且使用情节提要设计了 ui(第一次使用它)所以我有以下内容:

  • 入口点:导航控制器
  • rootView 视图控制器(推送到许多其他视图,其中一些是 UITableView)
  • 然后我以编程方式推送(在某些控制器中)从笔尖加载的视图(这没有问题)

每个控制器都有一个定义的标题。

我想要做的是在所有视图控制器的导航栏上放置一个 rigth 按钮,这样我就可以(以编程方式)推送到另一个控制器(希望在笔尖中,但我可以将它移动到 SB 没有问题)

我试过了:

  • 使用自定义类和 nib 文件,但我得到相同的未自定义导航栏
  • 覆盖 initWithCoder 以便我可以将其重定向到 de nib 文件,但会出现无限循环(StakOverflow,耶!)
  • 使用第二个类来避免无限循环但得到异常:

    由于未捕获的异常“NSGenericException”而终止应用程序,原因:“此编码器要求从 initWithCoder 返回替换的对象:

  • 在导航栏类的init方法中手动添加按钮,无效

  • 替换导航控制器initWithCoder中的导航栏,无效
  • 相同,但在导航控制器的 viewDidLoad 方法中,无效
  • 相同,但在 rootView Controller 中,无效

我使用的代码是这样的(以及一些变体):

UIBarButtonItem *BTN = [[UIBarButtonItem alloc] 
      initWithImage:[[UIImage alloc] initWithContentsOfFile:@"img.png"] 
      style:UIBarButtonItemStyleBordered 
      target:self 
      action:@selector(pushView)];

[[self navigationItem] setRightBarButtonItem:BTN];

有什么方法可以存档,还是应该手动查看每个视图?

--谢谢

【问题讨论】:

    标签: ios5 uinavigationcontroller xcode4.2 storyboard uinavigationbar


    【解决方案1】:

    是的,您需要在每个视图控制器中为它的navigationItem 属性执行操作。但是你可以通过在UIBarButtonItem 类上创建一个category 来简化它,该类将有一个方法来配置和返回你需要的按钮。 所以你只需要调用那个类别的方法,不需要到处写相同的代码。

    这里有一些类似的帖子:

    Adding same button to all view controllers in UINavigationController

    Adding UIBarButtonItem to all Navigation View Controllers inside a UITabBarController programmatically

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-02
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多