ios - 使用 UINavigationController 工具栏的替代方法

标签 ios objective-c cocoa-touch uitoolbar

我有一个包含多个 View 的应用程序,该应用程序使用导航 Controller 。在某些 View 上,我需要一个带有与该 View 相关的按钮的工具栏。虽然我已成功将自定义按钮添加到某些 View 的工具栏,但我在维护这些工具栏的状态时遇到了一个大问题。例如,当导航到具有自定义工具栏的 View 时,应用程序中的所有其他 View 似乎都继承了该工具栏的状态。例如, View “A”需要一个带有按钮“X”的工具栏。这按计划工作。但是,当导航到 View “B”时, View A 的工具栏会加载到 View B 中。

我尝试取消配置 viewDidDisappear 上的工具栏,但结果有限。使用此方法时,删除自定义项时会有延迟。例如,当导航到另一个 View 时,按钮不会消失,直到下一个 View 加载完毕。

真的,我所需要的只是一个工具栏,它位于 View 的底部,并且不会在用户 ScrollView 时滚动。似乎实现此目的的唯一方法是将其锁定到导航 Controller 的工具栏中。然而,这种方法会产生许多其他问题,包括上面提到的问题。

同样,我正在寻找的行为是拥有一个始终位于 View 底部并且独立于 View /表格 View 滚动的工具栏。有没有办法在不使用导航 Controller 的情况下实现这一目标?谢谢!

最佳答案

这是我的解决方案:在 ViewController 中实现这些方法。

 - (void)viewDidLoad
 {
     self.navigationController.toolbarHidden = NO;
 }

 - (void)viewDidAppear:(BOOL)animated
 {
     self.navigationController.toolbarHidden = NO;
     [super viewDidAppear:animated];
 }

 - (void)viewWillDisappear:(BOOL)animated
 {
     self.navigationController.toolbarHidden = YES;
     [super viewWillDisappear:animated];
 }

 - (void)viewDidDisappear:(BOOL)animated
 {
     self.navigationController.toolbarHidden = YES;
     [super viewDidDisappear:animated];
 } 

关于ios - 使用 UINavigationController 工具栏的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19993484/

相关文章:

ios - 在 iPad 上禁用横向模式,它如何影响 App Store 批准?

ios - iTunesConnect 是否使用最近的翻译?

objective-c - 将其他正在运行的应用程序的窗口置于最前面

c++ - const 类型 'NSString *const __strong' 对象的默认初始化?

ios - 居中 SKView 在 UIViewController : Swift

iphone - inapp 购买 - 发生未知错误 - 5002 错误代码 - iOS5

objective-c - 函数调用的参数太多,预期为 0 method_invoke

ios - 我如何阻止某人使用我们的应用程序?

ios - 如何从 ABAddressBookRegisterExternalChangeCallback 获取更新的联系人列表?

iphone - UIObject 不更新屏幕上的框架(位置)