如何创build基于nib文件的UINavigationItem.TitleView?

我有一个UINavigationController bassed序列的屏幕。 在其中一个屏幕上,我想用一个自定义的TitleViewreplace标准的标题。 自定义视图将使用一个nib文件创build,并具有一个图像和多个标签。

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

考虑使用UINib – 它是在iOS 4.0中公开的。 它为你的笔尖caching了两倍的性能。

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

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

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