2

我想用常规文本字段更改 navigationBar 的 titleView。然后我想设置 textField 的大小来填充旧的“正常”titleView。

我似乎无法在故事板中做到这一点。将文本字段拖到导航标题视图所在的位置不起作用。

所以我在

-(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 为空。

所以虽然我可以显示搜索栏,但我不能让搜索栏“填充”它的空间,因为我不知道空间是什么。

我不喜欢硬编码,因为你知道,未来可能会发生变化。

所以我该怎么做?

我曾经看过代码,而不是设置 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

4

1 回答 1

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;
于 2012-10-09T05:06:25.923 回答