我的问题
我有一个标准UIViewController
。按下按钮,它将加载表单模式视图控制器。通过按UIBarButtonItem
解除此模态视图时,我通过执行以下操作调用方法:
ViewController *main = [[ViewController alloc] initWithNibName:nil bundle:nil];
[main updateLabel];
在主-(void)updateLabel
的方法ViewController
中我设置了标签的文字,但标签不会改变。但我知道该函数被调用,因为如果我执行NSLog(@"Method call test);
而不是label.text = @"Test"
,我可以在控制台中看到该消息。
我做错了什么?它必须是我在主ViewController
中调用方法的方式,因为我可以在其他地方轻松更改标签。
我想做什么:
当解雇模态视图控制器时,我想在主视图控制器中调用一个方法,在这种情况下,更改标签的文本。
感谢您的帮助!
答案 0 :(得分:1)
您正在使用该代码创建一个新的ViewController实例,而不是指向您已有的实例。
如果ViewController是呈现模态视图的控制器,那么您可以使用
获取指向它的指针ViewController *main = self.presentingViewController;
答案 1 :(得分:0)
更好的方法是使用委托模式。
以下是设计模式建议
模态视图控制器不应该知道如何解散自己,这是呈现视图控制器的责任。毕竟,它可能以多种不同的方式呈现(模态,弹出,推送导航)。使用委托模式,模态视图控制器会告诉其委托,当按下条形按钮项时,它应该被解除。作为呈现视图控制器的代理将关闭模态视图并更新问题中提到的标签。