我以编程方式创建了一些UINavigationControllers并将它们添加到UITabBarController中。一切似乎工作正常,但我想在导航控制器中添加一个取消按钮,但它永远不会出现。我尝试了多种方法,但我似乎根本无法影响导航项目的显示,我从这里和其他网站上看到了多个例子,但没有任何反应。
MyTableViewController *mtvc = [[MyTableViewController alloc] init];
UINavigationController *myNavController = [[[UINavigationController alloc] initWithRootViewController:mtvc] autorelease];
myNavController.navigationBar.barStyle = UIBarStyleBlackOpaque; // this works
[mtvc release];
// TODO: figure out why added buttons aren't showing
UIBarButtonItem *closeButton = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(shutDown)] autorelease];
myNavController.navigationItem.leftBarButtonItem = closeButton; // never shows up
我也尝试过这样添加按钮
[myNavController.navigationItem setLeftBarButtonItem:closeButton animated:NO]; // also doesn't do anything
我开始感到沮丧,所以我也尝试了其他一些事情,看看我是否可以影响任何事情,但无济于事
myNavController.title = @"test"; // does nothing
我已尝试在将导航控制器添加到UITabBarController之前和之后执行此操作并且没有帮助。 我也尝试过rightBarButtonItem并尝试使用initWithTitle:而不是initWithBarButtonSystemItem。
有人请照亮我吗?显然,我这样做是错误的。
答案 0 :(得分:16)
尝试添加loadView
MyTableViewController
方法中的小节按钮,如下所示。
UIBarButtonItem *closeButton = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(shutDown)] autorelease];
self.navigationItem.leftBarButtonItem = closeButton;
我想这应该有用。
答案 1 :(得分:4)
您是否尝试过如下设置当前视图控制器导航项的按钮:
mtvc.navigationItem.leftBarButtonItem = closeButton;
答案 2 :(得分:2)
如果你需要在Swift 3.0中这样做,那很简单:
let closeButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.cancel,
target: self,
action: #selector({Your-viewController}.{close-method}))
self.navigationItem.leftBarButtonItem = closeButton