我有一个导航控制器,里面有一个视图控制器:
-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方法。
问题是什么,我该如何解决?
感谢。
答案 0 :(得分:1)
你的问题有点令人困惑。
我“想”你说你在视图控制器之间进行通信时遇到问题。
如果是这种情况,真正的问题是视图控制器不应该相互通信。相反,它们应该将状态存储在模型中。
如果你这样做,那么你将没有任何问题。考虑使用模型单例来保存丢失的信息。
如果我误解了您的问题,请告诉我。
答案 1 :(得分:0)
更改当前位于堆栈顶部的视图控制器中的标题用途(活动)。
self.navigationItem.title=@"the title";