我想用常规文本字段更改navigationBar的titleView。然后我想设置textField大小来填充旧的“普通”titleView。
我似乎无法在storyBoard中执行此操作。将文本字段拖动到导航标题View所在的位置不起作用。
所以我在
添加了东西-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
PO(self.navigationItem.titleView);
CGRect theFrame= self.navigationItem.titleView.frame;
self.navigationItem.titleView=self.searchBar;
//self.searchBar.frame = theFrame;
while (false);
...
它正在使用一个缓存。该PO是打印对象内容的宏。原来在viewDidAppear,self.navigationItem.titleView为null。
因此,虽然我可以显示searchBar,但我不能让searchBar“填充”它的空间,因为我不知道空间是什么。
我不想硬编码,因为你知道,将来可能会发生变化。
那我该怎么办?
我曾经看过代码而不是设置self.navigationItem.titleView,你只需要添加子视图。这种方法的问题甚至在viewDidAppear上,self.navigationItem.titleView为0。
我添加了以下代码:
CGRect theFrame= self.navigationItem.titleView.frame;
CGRect theFrame2 = self.searchBar.frame;
CGRect theFrame3 = self.navigationController.navigationItem.titleView.frame;
而且,我不知道如何使用nslog结构值,但是,theFrame和theFrame3都是0
答案 0 :(得分:2)
您可以在 viewWillAppear:
中尝试此操作UIView *customTitleView = [[UIView alloc]initWithFrame:CGRectMake((320-210)/2, 0, 210, 50)];
customTitleView.backgroundColor = [UIColor clearColor];
//create your UITextField or UILabel or other view and add as subview of customTitleView
self.navigationItem.titleView = customTitleView;