iPhone实用程序应用程序,从FLipSideView到MainView的连接?
问题描述:
我试图学习Objective-C和iPhone编程,但我遇到了一个问题。我有一个实用程序应用程序,并且我的MainView上有一个文本,当我单击它时,它会更改文本。简单,工作很好。但是,如果我不想将按钮放在FlipSideView的“背面”上,并且仍然使其更改正面(MainView)上的文本?我怎样才能让观点一起讨论?我尝试了很多不同的东西,并且搜索了一个answear,但似乎无法弄清楚。iPhone实用程序应用程序,从FLipSideView到MainView的连接?
如果有人有答案,或者可能指向教程/例子的链接,那将会很棒。
答
我想你已经使用该方法实现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添加到应该显示文本并更新视图的属性中。
thnx为答案,但它说“使用未声明的标识符(MainViewController *)”。我已经设置好了,就像你所描述的那样。 – Eivind 2011-04-03 14:35:04
将'#import“MainViewController.h”'直接放在FlipsideViewController.m文件的新行中的#import“FlipsideViewController.h”'后面。 – 2011-04-03 14:38:05
谢谢。当然! ;)现在它工作完美。 :) – Eivind 2011-04-03 15:16:46