2011-04-03 146 views
0

我试图学习Objective-C和iPhone编程,但我遇到了一个问题。我有一个实用程序应用程序,并且我的MainView上有一个文本,当我单击它时,它会更改文本。简单,工作很好。但是,如果我不想将按钮放在FlipSideView的“背面”上,并且仍然使其更改正面(MainView)上的文本?我怎样才能让观点一起讨论?我尝试了很多不同的东西,并且搜索了一个answear,但似乎无法弄清楚。iPhone实用程序应用程序,从FLipSideView到MainView的连接?

如果有人有答案,或者可能指向教程/例子的链接,那将会很棒。

回答

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添加到应该显示文本并更新视图的属性中。

+0

thnx为答案,但它说“使用未声明的标识符(MainViewController *)”。我已经设置好了,就像你所描述的那样。 – Eivind 2011-04-03 14:35:04

+0

将'#import“MainViewController.h”'直接放在FlipsideViewController.m文件的新行中的#import“FlipsideViewController.h”'后面。 – 2011-04-03 14:38:05

+0

谢谢。当然! ;)现在它工作完美。 :) – Eivind 2011-04-03 15:16:46

相关问题