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