我的应用程序适合于UINavigationController。简单地说,我将一个MyUIViewController设置为rootViewController of navigationController,而不是为navigationItem of myViewController inside viewDidLoad设置一个customTitleView。
现在,当我按下一个newViewController时,我希望看到以前的customTitleView (如苹果NavigationController引用所描述的),但它没有。
怎么了?
下面代码的一小部分和Apple UINavigationController参考
“如果新的顶级视图控制器具有自定义标题视图,导航栏将显示该视图而不是默认标题视图。要指定自定义标题视图,请设置视图控制器导航项的titleView属性。”
- (void)viewDidLoad {
[super viewDidLoad];
[self.navigationItem setTitleView:customTitleView];
}也许“默认标题视图”意味着“没有”?我将其解释为前一个titleView。
编辑
我正在尝试一项工作,但我还有其他的问题。这方面的工作是:
在我推入NavigationController中的每一个NavigationController中,我在viewDidLoad中设置了从rootViewController获取它的titleView
UiView *originalContainer = [[[self.navigationController.viewControllers objectAtIndex:0] navigationItem] titleView]我创建了一个newTitleView,并将其放入originalContainer.subviews (UIButton)中,因为我需要它的目标操作。
所有这些都完全适用于第一个推送控制器,但是如果我在堆栈中推送另一个viewController (第二个推送),那么我会释放对navigationController的每个引用。每个实例变量都为零。
此值是在viewDidLoad中获取的。
firstViewControllerPushed.navigationController = (UINavigationController*)0x6693da0 firstViewControllerPushed.parentViewController = (UINavigationController*)0x6693da0
secondViewControllerPushedFromFirstViewControllerPushed.navigationController = 0x0 secondViewControllerPushedFromFirstViewControllerPushed.parentViewController = 0x0
secondViewControllerPushed似乎无处可住!!
怎么可能?
我再次检查是否正确地按下了viewController,而不是正常地显示它。
由于这个问题,我无法为newTitleView做一个正确的secondViewControllerPushed设置。
发布于 2011-11-21 17:26:21
这是一半的黑客,但我觉得它使您在viewController工作中有了更多的控制权。因此,下面是一个小的方法,我有设置,然后我只叫它在viewDidLoad - self setUpNavBar;
并且使用UIButton按钮-UIButton:101是非常好的,因为它通过了苹果验证。
- (void) setUpNavBar
{
[self.navigationController setNavigationBarHidden: NO animated:YES];
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
self.title = @"Settings";
UIButton* backButton = [UIButton buttonWithType:101]; // left-pointing shape
[backButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];
[backButton setTitle:@"Back" forState:UIControlStateNormal];
UIBarButtonItem* backItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = backItem;
[backItem release];
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Logout"
style:UIBarButtonItemStylePlain target:self
action:@selector(logoutAction)] autorelease];
}https://stackoverflow.com/questions/8214391
复制相似问题