UINavigationBar标题和右键

时间:2009-06-05 19:36:28

标签: iphone cocoa-touch uinavigationcontroller

我有一个导航控制器,里面有一个视图控制器:

-NavigationController1
--MyViewController

我还有另一个导航控制器 - NavigationController2。 我想从另一个视图控制器调用MyViewController - ViewController2,它被推入NavigationController2。     -NavigationController2     --ViewController2

我是按照以下方式做的:

@implementation ModifyDicVController

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    self.navigationItem.rightBarButtonItem = [ [ [UIBarButtonItem alloc]
                    initWithBarButtonSystemItem:
                    UIBarButtonSystemItemAdd target:self
                    action:@selector(add_clicked)] autorelease];

}


-(void) add_clicked
{
    [navigationController pushViewController: addWordsVController animated: YES];
}

@end

这是MyViewController的viewWillAppear方法(正在调用的方法):

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self setTitle: @"My title"];
}

当用户开始编辑文本字段时,我正在向导航栏添加“完成”按钮:

- (void) textFieldDidBeginEditing: (UITextField *) textField
{ 
    self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] 
                initWithTitle: NSLocalizedString(@"button: done", @"")
                style:UIBarButtonItemStyleDone 
                target:self 
                action:@selector(doneEditing)] 
                autorelease];
}

问题是:如果我从ViewController2调用MyViewController并将其推入NavigationController2,之后我从其自己的NavigationController1调用MyViewController,则不会添加导航栏的标题和完成按钮。然而,正在调用MyViewController的viewWillAppear和textFieldDidBeginEditing方法。

问题是什么,我该如何解决?

感谢。

2 个答案:

答案 0 :(得分:1)

你的问题有点令人困惑。

我“想”你说你在视图控制器之间进行通信时遇到问题。

如果是这种情况,真正的问题是视图控制器不应该相互通信。相反,它们应该将状态存储在模型中。

如果你这样做,那么你将没有任何问题。考虑使用模型单例来保存丢失的信息。

如果我误解了您的问题,请告诉我。

答案 1 :(得分:0)

更改当前位于堆栈顶部的视图控制器中的标题用途(活动)。

self.navigationItem.title=@"the title";