Попытка программно добавить кнопку в UINavigationController, но она никогда не появляется - PullRequest
7 голосов
/ 21 февраля 2011

Я программно создал несколько UINavigationController и добавил их в 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.

Кто-нибудь, пожалуйста, просветите меня?Очевидно, я делаю это неправильно.

Ответы [ 3 ]

16 голосов
/ 21 февраля 2011

Попробуйте добавить кнопки панели в loadView методе MyTableViewController, как показано ниже.

UIBarButtonItem *closeButton = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(shutDown)] autorelease]; 
self.navigationItem.leftBarButtonItem = closeButton;

Я думаю, это должно работать.

4 голосов
/ 21 февраля 2011

Вы пробовали установить кнопку элемента навигации текущего контроллера вида следующим образом:

mtvc.navigationItem.leftBarButtonItem = closeButton;
2 голосов
/ 10 апреля 2017

Если вам нужно сделать это в Swift 3.0, это просто так:

let closeButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.cancel,
                        target: self,
                        action: #selector({Your-viewController}.{close-method}))
self.navigationItem.leftBarButtonItem = closeButton
...