UIPopoverController 中的 UINavigationController:设置标题
Posted
技术标签:
【中文标题】UIPopoverController 中的 UINavigationController:设置标题【英文标题】:UINavigationController in UIPopoverController: setting the title 【发布时间】:2012-08-21 06:11:49 【问题描述】:我试图在UIPopoverController
中显示UINavigationController
,但由于某种原因我无法设置标题。
SearchViewController *searchView = [[[SearchViewController alloc] init] autorelease];
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:searchView];
[popover presentPopoverFromBarButtonItem:_searchBarButton permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
我尝试在- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
中更改它
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
// Change the title
UILabel *label = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:20.0];
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
label.textAlignment = UITextAlignmentCenter;
label.textColor = [UIColor whiteColor];
label.text = @"Print / Email";
[label sizeToFit];
self.navigationItem.titleView = label;
return self;
我也尝试在- (void)viewDidLoad
中设置它
- (void)viewDidLoad
[super viewDidLoad];
self.contentSizeForViewInPopover = CGSizeMake(320.0, 250.0f);
self.navigationItem.title = @"Print / Email";
self.title = @"Print / Email";
但在任何情况下标题都不起作用,我还是做错了什么吗?
【问题讨论】:
尝试从 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 中删除 titleview 标签代码。 【参考方案1】:编辑在 UINavigationController 广告中添加您的 SearchViewController 控制器,在 UIPopoverController 中像这样:
SearchViewController *searchView = [[[SearchViewController alloc] init] autorelease];
UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:searchView];
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:navController];
[popover presentPopoverFromBarButtonItem:_searchBarButton permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
现在在 SearchViewController 的 viewDidLoad 方法中:
- (void)viewDidLoad
[super viewDidLoad];
self.title = @"Print / Email";
参考setting-the-title-of-a-uipopovercontroller
【讨论】:
谢谢,但这也不起作用,我之前试过,它仍然是空的。 实际上它只是没有显示,当我这样做时NSLog(@"%@", self.title);
它返回正确的标题
您更新的方法确实有效,这似乎是一种奇怪的方法,谢谢!【参考方案2】:
尝试用这种方式显示弹出框控制器
SearchViewController *searchView = [[[SearchViewController alloc] init] autorelease];
UINavigationController *navCont=[[UINavigationController alloc] initWithRootViewController:searchView];
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:navCont];
[popover presentPopoverFromBarButtonItem:_searchBarButton permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
【讨论】:
NySearchViewController
已经是 UINavigationController
,所以应该没什么区别【参考方案3】:
你可以试试这个:
SearchViewController *searchView = [[[SearchViewController alloc] init] autorelease];
UINavigationController *_nav = [[[UINavigationController alloc] initWithRoot.....:searchView] autorelease];
然后将_nav放入popover。
每个 UIViewController 都有自己的标签栏和导航,但你应该初始化它们。然后你才能正确使用它们。
【讨论】:
以上是关于UIPopoverController 中的 UINavigationController:设置标题的主要内容,如果未能解决你的问题,请参考以下文章
UIViewController 的视图没有出现在 UIPopoverController 中
UIPopoverController 中的 UINavigationController:设置标题
现有 UIPopoverController 中的 UIImagePickerController
UIPopoverController 中的 UIScrollView