从另一个viewcontroller调用第一个视图中的函数

时间:2010-06-24 13:04:15

标签: iphone objective-c cocoa-touch function uiviewcontroller

我希望你能在至少一点点成功地澄清我如何做和做什么,我确定我错了,所以我真的需要专家意见。 我有两个viewcontroller和nibs我想要的是从另一个ViewController调用第一类的函数,问题是另一个viewcontroller设法调用这个函数但我唯一能看到的就是输出的NSlog控制台(我把它放在那个位置,知道该函数被调用)

例如: 的 FirstViewController.m

    -(void)drawingFunction:(NSString*)inputText{
NSLog("Feature was launched");
/* showing stuff in FirstView.xib */
}

SecondViewController.m

-(void)turnOnFunction:(id)sender{
FirstViewController *stuff= [[PrviViewController alloc] init];
[stuff drawingFunction:@"ShowAll"];
}

基本上当我在PrviViewController.m中调用该函数时,意味着不参考外部,例如

[self drawingFunction:@"ShowAll"];

一切都很好显示,但当我尝试从SecondViewController.m调用此函数时,我看到的只是控制台上的“功能已启动

我真的不知道该怎么做......

2 个答案:

答案 0 :(得分:0)

如果我说得对,FirstViewController位于视图控制器层次结构的顶部(在导航控制器或呈现的模态中)?因此,如果只是创建一个SecondViewController实例并调用一个应该更改与SecondViewController对应的视图上的用户界面的函数,则根本不会这样做。

例如,您必须使用presentModalViewController:animated:呈现SecondViewController及其视图。之后,将显示SecondViewController的视图,您可以对该视图进行任何更改。同样调用方法drawingFunction:将按预期运行。

干杯, 安德烈亚斯

答案 1 :(得分:0)

您将实例与类混淆。您不向类发送消息(调用函数),而是将它们发送到实例。

在这种情况下,您有两个完全独立的FirstViewController实例。第一个是通过加载nib创建的,第二个是在-[SecondController turnOnFunction:]中创建的。当您希望将drawingFunction:消息发送到第二个实例时,它将被发送到第二个实例。

您需要将FirstViewController的nib实例链接到SecondController实例。您可以使用界面构建器中的插座执行此操作,也可以在创建显示SecondController时指定它。