UIPopoverController中的UINavigationController,显示标题不起作用

时间:2012-01-04 19:54:33

标签: iphone uinavigationcontroller uipopovercontroller

我不确定为什么这不起作用,因为它在我的应用程序的另一个区域工作。我试图显示navigationController的标题,它是popover的contentViewController。这是代码:

        DetailView* details = [[[DetailView alloc] initWithTarget:target] autorelease];
        UINavigationController* content = [[[UINavigationController alloc] initWithRootViewController:details] autorelease];
        self.popover = [[[UIPopoverController alloc] initWithContentViewController:content] autorelease];
        [self.popover setDelegate:self];
    }    
    [self.popover presentPopoverFromRect:frame inView:self.scrollView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

比我的DetailView.m:

- (id)initWithTarget:(Target*)aTarget
{
    self = [super initWithNibName:@"TargetDetailView" bundle:nil];
    if (self) {
        // Custom initialization
        target = [aTarget retain];
    }
    return self;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationItem.title = @"Target";
}

我也试过

content.navigationItem.title = @"Target";

但是这并没有在我的popover中给我一个标题。有什么想法吗? TIA。

2 个答案:

答案 0 :(得分:2)

把它放在viewWillAppear:animated

  

self.navigationItem.title = @“目标”;

我怀疑viewDidLoad在它是UINavigationController的一部分之前在DetailView上被调用,因此它当时可能没有navigationItem。

答案 1 :(得分:0)

您所要做的就是设置title的{​​{1}}属性。将此控制器拾取到导航层次结构后,UIViewController会将此标题读入其自己的导航栏。因此,不要使用UINavigationController来处理导航控制器,只需将其设置为viewWillAppear:,一切都将自动处理。

-viewDidLoad