Установка заголовка элемента навигации в модальном представлении - PullRequest
3 голосов
/ 16 июня 2011

При рассмотрении существующих ответов я думаю Вопрос Стива и ответ Codelark подходят к моей проблеме.Но я что-то здесь упускаю.

Мой xib для модального представления: IFDNewFormViewController.xib:

View Controller
> Table View
>> View
>>> Navigation Bar
>>>> Navigation Item - New Form
>> View
>>> Toolbar
>>>> Bar Button Item - Cancel
>>>> Bar Button Item - Flexible Space
>>>> Bar Button Item - Done

Мой метод, который вызывается при нажатии кнопки:

IFDNewFormViewController.m:

- (void) newFormDisplay:(id)sender {
    // Show the Create Flightlog View
    IFDNewFormViewController *newForm = [[IFDNewFormViewController alloc] init];
    newForm.flightlogDelegate = self;
    newForm.dataType = [self ifdDataType];
    newForm.displayDataType = [NSString stringWithFormat:@"New %@",[self displayDataType]];
    newForm.title = [NSString stringWithFormat:@"Title %@",[self displayDataType]];
    newForm.navigationItem.title = [NSString stringWithFormat:@"NavItem.Title %@",[self displayDataType]];
    newForm.navigationController.title = [NSString stringWithFormat:@"NavController.Title %@",[self displayDataType]];
    newForm.modalViewController.title = [NSString stringWithFormat:@"ModalViewController.Title %@",[self displayDataType]];


    NSLog(@"iFDListViewController_Pad:newFormDisplay start form for dataType=%@ (%@)",[self ifdDataType], [self displayDataType]);
    [self presentModalViewController:newForm animated:YES];
    [newForm release];
}

Я установил заголовок в xib:

Элемент навигации - Новая форма -> заголовок.

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

newForm.navigationItem.title = [NSString stringWithFormat:@"NavItem.Title %@",[self displayDataType]];
newForm.navigationController.title = [NSString stringWithFormat:@"NavController.Title %@",[self displayDataType]];
newForm.modalViewController.title = [NSString stringWithFormat:@"ModalViewController.Title %@",[self displayDataType]];

Все еще нет радости.

Я что-то здесь упускаю.Есть идеи?

1 Ответ

3 голосов
/ 16 июня 2011

Поскольку вы не помещаете этот контроллер представления в UINavigationController, установка newForm.navigationItem.title не поможет.

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

В IFDNewFormViewController.h создайте переменную экземпляра

    UINavigationBar *customNavBar;

исвойство outlet

    @property (nonatomic, retain) IBOutlet *UINavigationBar customNavBar;

В IFDNewFormViewController.m:

    @synthesize customNavBar;

Обязательно освободите его в dealloc и установите значение nil в viewDidUnload.

При редактировании xibщелкните правой кнопкой мыши на панели навигации, затем щелкните и перетащите открытый кружок рядом с «New Referencing Outlet» до владельца файла и выберите customNavBar.Таким образом, свойство будет содержать полосу из вашей xib после загрузки.

Когда вы запускаете IFDNewFormViewController, обязательно используйте следующее:

    IFDNewFormViewController *newForm = [[IFDNewFormViewController] alloc] initWithNibName:@"whatever-the-file-name-is" bundle:nil];

Или данные в xibдаже не будет использоваться.

...