【发布时间】:2012-11-21 02:22:49
【问题描述】:
有什么方法可以让我拥有一个UINavigationController 并让它无论被推送多少次都始终显示相同的UIBarButtonItem?
【问题讨论】:
标签: ios uinavigationcontroller uibarbuttonitem
有什么方法可以让我拥有一个UINavigationController 并让它无论被推送多少次都始终显示相同的UIBarButtonItem?
【问题讨论】:
标签: ios uinavigationcontroller uibarbuttonitem
试试这个-
UINavigationController 的子类(CustomNavigationController) 并使用它来推送您的视图控制器。CustomNavigationController 中,在init 或viewDidLoad 中创建UIBarButtonItem。将target 和action 添加到其中。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
【讨论】:
您可以在UINavigationController 中创建一个包含您的推送控制器的全局UITabBarController,然后将您的推送控制器navigationbar 隐藏
【讨论】:
或者尝试使用 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];
}
【讨论】:
您可以使用UINavigationControllerDelegate,如下:
- (void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
在此委托方法中,您可以检查是否将 barButtonItem 添加到导航栏。
【讨论】: