1

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

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

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

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

我试过了:

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

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

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

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

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

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

[[self navigationItem] setRightBarButtonItem:BTN];

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

- 谢谢

4

1 回答 1

3

是的,您需要在每个视图控制器中为其navigationItem属性执行操作。但是您可以通过创建一个categoryonUIBarButtonItem类来简化它,该类将有一个方法来配置和返回您需要的按钮。因此,您只需要调用该类别的方法,无需在任何地方编写相同的代码。

以下是一些类似的帖子:

向 UINavigationController 中的所有视图控制器添加相同的按钮

以编程方式将 UIBarButtonItem 添加到 UITabBarController 内的所有导航视图控制器

于 2012-08-09T18:43:53.227 回答