在视图之间传递值

时间:2008-10-28 08:34:49

标签: iphone cocoa-touch

我有MainViewController调用WebViewController(来自UICatalog示例应用程序) 在WebViewController中我创建了一些函数setValue(){...}来设置一些从WebViewController.h作为参数传递给变量(NSString * value)的值,但是当我从MainViewController尝试类似WebViewController targetViewController时... targetViewController.setValue(value),它说:“错误:请求成员'setValue'的东西不是s结构或联合”......

3 个答案:

答案 0 :(得分:1)

如果您有一个名为“value”的属性,并使用@sythesize为您创建方法,在这种情况下,您使用“。”调用。符号:

targetViewController.value = whatever;

或者你可以直接调用setter而不管你或@synthesize编写方法:

[targetViewController setValue:whatever];

属性语法(class.property = whatever)实际上只是调用“setValue:”方法的快捷方式,作为回报,属性的@property和@synthesize机制只是为您编写了一段有用的代码。

编辑:之前我曾说过如果你刚写了一个“setValue:”方法,你可以使用“class.value = newValue”表示法来调用它,但这是不正确的 - 你必须定义一个@property来使用“。 “符号

答案 1 :(得分:1)

我相信

targetViewController.value = whatever;

仅在您已经声明了@property时才有效;如果没有,您将需要使用完整方法调用语法:

[targetViewController setValue: whatever];

否则,Kendall使用setter和@synthesize是正确的。

此外,您的语法是使用程序C

编写的
targetViewController.setValue(value);

肯定无效。

答案 2 :(得分:0)

您还需要确保#import targetViewController.h文件。