我正在尝试学习Objective-C和iPhone编程,但我遇到了问题。我有一个实用程序应用程序,我在MainView上有一个文本和一个按钮,当我单击它时更改文本。简单,工作得很好。但是,如果我不想将按钮放在FlipSideView的“背面”,仍然可以更改前端(MainView)上的文本,该怎么办?如何让观点一起交谈?我尝试了很多不同的东西,并寻找一件衣服,但似乎无法弄明白。
如果有人有安装,或者可能是教程/示例的链接,那会很棒。
答案 0 :(得分:1)
我想您已经使用了在MainViewController
中实现以下方法的模板:
- (IBAction)showInfo:(id)sender {
FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"FlipsideView" bundle:nil];
controller.delegate = self;
...
}
正如您所看到的,它将FlipSideController的委托设置为MainViewController的实例。
一种方法是将动作放入FlipSideViewController
,如下所示:
- (IBAction)changeTextInMainView
{
[(MainViewController *)self.delegate changeText];
}
触摸背面的按钮时触发。你必须在IB中连接它,并将方法添加到标题中。
然后在MainViewController
- (void)changeText
{
self.myLabel.text = @"text changed to this";
}
也可以将此方法添加到标题中。
另一种更优雅的方法是将标签的文本保存在属性中(可能在它自己的模型类中),可以从任何视图访问,通过引用将其传递给控制器。然后从每个viewController添加一个Key Value Observer到属性,该属性应该显示文本并更新视图。