1

好的,所以我有一个标签栏 iPhone 应用程序。tabbarcontroller 包含大约 5 个视图控制器,每个视图控制器都嵌入到自己的导航控制器中,除了 1 个,我刚刚在 IB 中添加了一个导航栏,以便在整个应用程序中保持一致的外观。在应用程序中的每个导航栏上,我想要一个 rightBarButtonItem,无论它是从哪里选择的,它都会打开相同的模式视图控制器。与音乐应用程序中的“正在播放”按钮类似,我希望按钮保留在每个导航栏上,无论我在哪个选项卡上或导航到导航控制器的深度如何。我将如何去做这样的事情?有什么方法可以简单地将按钮应用到每个导航栏,就像 UIAppearance 可以将图像应用到应用程序中的每个导航栏一样?提前感谢您的任何想法。

4

1 回答 1

2

一种简单的方法是创建一个基本视图控制器,所有其他视图控制器都从该控制器扩展。

UIBarButtonItem有了这个,您可以在方法中设置一个viewDidLoad将自身附加到导航栏并侦听事件的方法。从那里,很容易观察事件并呈现模态视图控制器或将适当的视图控制器推送到导航堆栈。

我将这种方法用于“注销”栏按钮项,该按钮项在被点击时显示登录视图控制器,作为用户注销其帐户的快速替代方案。

唯一的缺点是从基本视图控制器继承的每个视图控制器都将在导航栏中具有注销按钮。如果您需要其他按钮或想要隐藏默认按钮,则需要将其替换为另一个按钮。

这是一种快速简便的方法,如果需要,也很容易删除,因为您只需更改头文件以反映继承,而不是筛选多个视图控制器来删除按钮的每个实例。它也很容易维护,因为您可以在任何子类中重载按钮目标以在触发事件时执行不同的功能。

于 2013-06-04T19:07:56.843 回答