2

我有一个导航控制器,其中有一个视图控制器:

-NavigationController1
--MyViewController

而且我还有另一个导航控制器——NavigationController2。我想从另一个视图控制器 - ViewController2 调用 MyViewController,它被推送到 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];
}

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

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

谢谢。

4

2 回答 2

1

你的问题有点令人困惑。

我“认为”您是在说您在视图控制器之间进行通信时遇到问题。

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

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

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

于 2009-06-06T01:13:15.987 回答
0

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

self.navigationItem.title=@"the title";
于 2011-09-12T22:37:33.703 回答