Не могу добавить кнопку на панели навигации - PullRequest
1 голос
/ 11 марта 2011

У меня есть UItable с предметами.У меня есть панель навигации и т. Д. На один элемент в таблице «Категория» я помещаю другой UITable, как это:

CategoryTableViewController *b = [[CategoryTableViewController alloc]init];
        [self.navigationController pushViewController:b animated:YES];
        [b release];

Теперь я хочу добавить кнопку «ДОБАВИТЬ» на панели навигации и добавить UINavigationBarItem в * .xibподключите его к розеткам и добавьте его вот так в viewDidLoad:

self.navigationItem.rightBarButtonItem = self.addButton;

И это не работает (addButton имеет значение null), но когда я помещаю тот же код для кнопки добавления в мой первый UITable, он работает нормально иДобавлена ​​кнопка «ДОБАВИТЬ».

В чем может быть проблема?

Ответы [ 3 ]

2 голосов
/ 11 марта 2011

В ViewController, который должен отображать кнопку типа панели навигации в методе viewDidLoad ():

self.addToolbarButton = [[[UIBarButtonItem alloc]           
initWithTitle:@"Add", nil)
    style:UIBarButtonSystemItemAdd 
    target:self
    action:@selector (add)] autorelease];
self.navigationItem.leftBarButtonItem = addToolbarButton;

Это добавит кнопку «добавить» в стиле слева на панели навигации, которая вызывает метод селектора:

-(void) add {...}

в том же классе, когда он повернут. В этом методе в том же классе вы можете указать свою логику добавления. Если этот метод должен быть помещен в другой класс, установите для него цель.

Это программный способ решить эту проблему. Метод "- (void) add" - это то, чем был ваш Outlet в подходе .xib.

Для вашего подхода .xib вы должны убедиться, что свойство Outlet для navigationBarButton установлено для сохранения.

1 голос
/ 11 марта 2011

self.addButton имеет значение NULL, поэтому убедитесь, что оно не равно NULL.Создать кнопку из кода.

UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneMeasuring:)];
0 голосов
/ 11 марта 2011

является [super viewDidLoad]; первым вызовом в вашем методе viewDidLoad?

Если не попытаться поставить его в самом начале viewDidLoad.

...