在if / else函数中,取决于满足的条件,我想向用户显示一些字符串作为结果。我试图通过以编程方式更改为新的viewController来实现此目的。我创建了一个方法'showresult',它将一个变量'result'作为参数,然后更改viewController并在那里显示'result'的内容。
为了更改viewController,我现在有:
在.h中定义为:
然后我试图在if / else函数中调用这个getData方法:
这里我得到''NSString'没有可见的@interface'声明选择器'getData' 我假设错误在于我对方法的定义,我只是看不出原因
- 更新部分 -
我现在已经达到以下方式:changin viewController为我工作:
[self performSegueWithIdentifier:@"gotoresult" sender:self];
现在我只需要最后一部分,即将一个变量传递给新的viewController。我找到了关于传递某些东西的其他线程,但只是不明白如何应用它。
我找到的一个建议就是这个,但是我的Xcode中没有识别prepareforSegue
-(void)prepareforSegue:(UIStoryboardSegue *)segue sender:(id)sender{
GTImageView * viewController = segue.destinationViewController;
viewController.someData = 99;
}
我只需要能够在新的viewController上显示一些字符串
答案 0 :(得分:1)
编译器没有抱怨self
因为标识符未知但是因为你声明方法的方式是错误的。在Objective-C中,您可以定义如下方法:
- (returnType)doSomethingWithTheFirstParameter:(param1Type)param1 secondParameter:(param2Type)param2 {
// body
}
您的方法名称为-doSomethingWithFirstParameter:secondParamter:
。
以同样的方式,您可以添加任意数量的参数。因此,在您的情况下,正确的方法定义是:
- (NSString *)showResult:(NSString *)result {
// body
}
由于这是非常基本的东西,我建议你先阅读Objective-C的介绍或做一个教程,以熟悉语法,例如: Programming with Objective-C
问题已被编辑。回答您的新问题:
编译器会告诉您该代码有什么问题:在if-branch中,您在对象getData
上调用消息result
,该消息似乎是类NSString
。但是您将getData
方法添加到视图控制器类中。因此,当您想要从视图控制器内部调用该方法时,您需要使用
[self getData:result];
代替。
此外,对于返回类型NSString
的方法,不应返回0。如果您不希望该方法返回任何内容,请将方法定义更改为:
- (void)showResult:(NSString *)result {
// body
}
并删除该行
return 0;
或返回一些NSString
对象。
注意:请不要包含代码的屏幕截图,而是复制代码并将文本粘贴到您的帖子中。除了其他优点,您还可以让其他用户复制您的代码并进行试用。