如何根据nib文件创建UINavigationItem.TitleView?

时间:2011-11-27 15:09:12

标签: objective-c ios xcode uinavigationcontroller uinavigationitem

我有一个基于UINavigationController的屏幕序列。在其中一个屏幕上,我想用自定义TitleView替换标准标题。将使用nib文件创建自定义视图,并且将具有图像和多个标签。

我是否创建了一个带有相关nib文件的UIViewController,加载nib,并将.view属性分配给TitleView?基本上,我如何使用一个笔尖,我可以布局必要的元素,然后将结果视图分配给TitleView属性?

2 个答案:

答案 0 :(得分:1)

考虑使用UINib - 它在iOS 4.0中公开。因为它为你缓存笔尖所以它会加倍。

UINib *nib = [UINib nibWithNibName:@"TestView" bundle:nil];
UIView *myView = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0]];

objectAtIndex引用NIB中的顶级视图 - 通常是一个(索引0),但如果有很多,则需要提供索引。

获得视图后,您可以将其分配给navigationItem titleView

self.navigationItem.titleView = myView;
[myview release];

编辑:

如果您需要访问NIB中的各个控件,请在其上添加标签并通过viewWithTag访问它们。见这里:

http://useyourloaf.com/blog/2011/2/28/speeding-up-table-view-cell-loading-with-uinib.html

答案 1 :(得分:0)

在Interface Builder&中创建自定义视图。将其加载到视图中(或者您可以创建一个IBOutlet iVar来指向视图)。然后,只需将titleView设置为自定义视图即可。

UIView * customTitleView = [[[NSBundle mainBundle] loadNibNamed:@"TitleView" owner:self options:nil] lastObject];
self.navigationItem.titleView = customTitleView;
[customTitleView release];