首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UINavigationController和titleView

UINavigationController和titleView
EN

Stack Overflow用户
提问于 2011-11-21 15:45:20
回答 1查看 1.6K关注 0票数 0

我的应用程序适合于UINavigationController。简单地说,我将一个MyUIViewController设置为rootViewController of navigationController,而不是为navigationItem of myViewController inside viewDidLoad设置一个customTitleView

现在,当我按下一个newViewController时,我希望看到以前的customTitleView (如苹果NavigationController引用所描述的),但它没有。

怎么了?

下面代码的一小部分和Apple UINavigationController参考

“如果新的顶级视图控制器具有自定义标题视图,导航栏将显示该视图而不是默认标题视图。要指定自定义标题视图,请设置视图控制器导航项的titleView属性。”

代码语言:javascript
复制
- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self.navigationItem setTitleView:customTitleView];
}

也许“默认标题视图”意味着“没有”?我将其解释为前一个titleView。

编辑

我正在尝试一项工作,但我还有其他的问题。这方面的工作是:

在我推入NavigationController中的每一个NavigationController中,我在viewDidLoad中设置了从rootViewController获取它的titleView

代码语言:javascript
复制
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设置。

EN

回答 1

Stack Overflow用户

发布于 2011-11-21 17:26:21

这是一半的黑客,但我觉得它使您在viewController工作中有了更多的控制权。因此,下面是一个小的方法,我有设置,然后我只叫它在viewDidLoad - self setUpNavBar;

并且使用UIButton按钮-UIButton:101是非常好的,因为它通过了苹果验证。

代码语言:javascript
复制
- (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];                     

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8214391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档