在模态视图中设置导航项标题

时间:2011-06-16 14:15:07

标签: ios uinavigationbar uinavigationitem

在审核现有答案时,我认为Steve's question and codelark's answer是我的问题的壁橱。但我在这里错过了一些东西。

模态视图的我的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 个答案:

答案 0 :(得分:3)

由于您没有将此视图控制器推送到UINavigationController,因此设置newForm.navigationItem.title将无法解决问题。

看起来你正在推动一个包含它自己的导航栏的模态视图控制器。在这种情况下,您可能需要创建自己的引用并将xib中的条带绑定到它。

在IFDNewFormViewController.h中创建一个实例变量

    UINavigationBar *customNavBar;

和出口属性

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

在IFDNewFormViewController.m中:

    @synthesize customNavBar;

请务必在dealloc中释放它,并在viewDidUnload中设置为nil。

编辑xib时,右键单击导航栏,然后单击并将“New Referencing Outlet”旁边的空心圆拖动到文件所有者,然后选择customNavBar。这样,属性将在加载后包含xib中的栏。

初始化IFDNewFormViewController时,请务必使用以下命令:

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

或者甚至不会使用xib中的数据。