UINavigationController 中的常量 UIBarButtonItem

Posted

技术标签:

【中文标题】UINavigationController 中的常量 UIBarButtonItem【英文标题】:Constant UIBarButtonItem in UINavigationController 【发布时间】:2012-11-21 02:22:49 【问题描述】:

有什么方法可以让我拥有一个UINavigationController 并让它无论被推送多少次都始终显示相同的UIBarButtonItem

【问题讨论】:

【参考方案1】:

试试这个-

    创建UINavigationController 的子类(CustomNavigationController) 并使用它来推送您的视图控制器。 在CustomNavigationController 中,在initviewDidLoad 中创建UIBarButtonItem。将targetaction 添加到其中。 在CustomNavigationController 中实现UINavigationControllerDelegate 委托,并将barButtonYouCreated 设置为委托方法中每个视图控制器的右栏或左栏按钮项。

使用

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
     viewController.navigationItem.leftBarButtonItem = barButtonYouCreated;

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

【讨论】:

【参考方案2】:

您可以在UINavigationController 中创建一个包含您的推送控制器的全局UITabBarController,然后将您的推送控制器navigationbar 隐藏

【讨论】:

【参考方案3】:

或者尝试使用 UINavigationController 类别,并自定义 back item,这样无论推送多少次,都只需为 navigationController 的 back item 设置相同的视图。 比如:

@implementation UIViewController (CustomNavigation)

- (void)setLeftBarButtonItem:(UIButton*)leftview
    
    UIBarButtonItem *customItem = [[[UIBarButtonItem alloc] initWithCustomView:leftview] autorelease];
    self.navigationItem.leftBarButtonItem = customItem; 
    [(UIButton*)self.navigationItem.leftBarButtonItem.customView addTarget:self.navigationController action:@selector(popViewControllerAnimated:) forControlEvents:UIControlEventTouchUpInside];

【讨论】:

【参考方案4】:

您可以使用UINavigationControllerDelegate,如下:

- (void)navigationController:(UINavigationController *)navigationController 
      willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

在此委托方法中,您可以检查是否将 barButtonItem 添加到导航栏。

【讨论】:

以上是关于UINavigationController 中的常量 UIBarButtonItem的主要内容,如果未能解决你的问题,请参考以下文章

(Swift) 在嵌套在 Main UINavigationController 中的 UINavigationController 和 UITabController 之间切换

UINavigationController 中的常量 UIBarButtonItem

UINavigationController 中的 setAlpha

UINavigationController:调整大小动画中的标题跳转

UIPopoverController 中的 UINavigationController:设置标题

UITabBarController 问题中的 UINavigationController