Ios 到新viewcontroller的编程顺序
在if/else函数中,根据满足的条件,我希望向用户显示一些字符串作为结果。我试图通过编程方式更改为新的viewController来实现这一点。我已经创建了一个方法“showresult”,它将以一个变量“result”作为参数,然后更改viewController并在那里显示“result”的内容 对于更改viewController,我现在有: 在.h中定义为: 然后我尝试在if/else函数中调用这个getData方法: 在这里,我得到'NSString'的'no visible@接口声明选择器'getData' 我假设错误在于我对方法的定义,我只是不明白为什么 --更新部分-- 现在,我已经达到了以下changin viewController方式适合我的程度:Ios 到新viewcontroller的编程顺序,ios,objective-c,uiviewcontroller,Ios,Objective C,Uiviewcontroller,在if/else函数中,根据满足的条件,我希望向用户显示一些字符串作为结果。我试图通过编程方式更改为新的viewController来实现这一点。我已经创建了一个方法“showresult”,它将以一个变量“result”作为参数,然后更改viewController并在那里显示“result”的内容 对于更改viewController,我现在有: 在.h中定义为: 然后我尝试在if/else函数中调用这个getData方法: 在这里,我得到'NSString'的'no visible@
[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:SecondParameter:
。
以同样的方式,您可以添加任意多的参数。因此,在您的情况下,正确的方法定义是:
- (NSString *)showResult:(NSString *)result {
// body
}
由于这是非常基本的东西,我建议您首先阅读Objective-C的介绍或做一个教程,以便熟悉语法,例如
问题已被编辑。新问题的答案: 编译器会告诉您该代码的错误:在if分支中,您调用对象
result
上的消息getData
,该消息似乎属于NSString
类。但是您将getData
方法添加到了视图控制器类中。因此,当您想从视图控制器内部调用该方法时,需要使用
[self getData:result];
相反
此外,对于返回类型为NSString
的方法,不应返回0。如果不希望方法返回任何内容,请将方法定义更改为:
- (void)showResult:(NSString *)result {
// body
}
然后拆下线路
return 0;
或者返回一些NSString
对象
注意:请不要包括您的代码截图,而是复制代码并将文本粘贴到您的帖子中。除了其他优点外,您还为其他用户提供了复制代码并试用的选项。@Misha I立即更新了问题,看来我的方法还是有问题definition@user3649561当前位置你真的应该先读一些Objective-C的介绍。我可以再帮你一次,但你很可能会遇到下一个问题。此外,最好问一个新问题,或者至少标记一下你对问题所做的编辑,因为现在我的回答不再回答问题,其他用户也无法理解。我想这些都是好的观点。我开始意识到在尝试之前我需要更多的介绍。我还阅读了其他线程,说要使用[self-getData:result]格式,但不幸的是,当我这样做时,我只得到了“使用未声明的标识符self”,我发现了这一部分:)再次感谢您的回答。通常,当编译器抱怨“未声明的标识符self”时,您的代码在这一行之前有问题。错误的方法声明、缺少分号、缺少括号等。请尝试删除(或注释)方法中
[self-getData:result]
行前后的所有代码,并查看编译器是否仍在抱怨。