Ios 到新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@

在if/else函数中,根据满足的条件,我希望向用户显示一些字符串作为结果。我试图通过编程方式更改为新的viewController来实现这一点。我已经创建了一个方法“showresult”,它将以一个变量“result”作为参数,然后更改viewController并在那里显示“result”的内容

对于更改viewController,我现在有:

在.h中定义为:

然后我尝试在if/else函数中调用这个getData方法:

在这里,我得到'NSString'的'no visible@接口声明选择器'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上显示一些字符串,编译器并不是因为标识符未知而抱怨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]
行前后的所有代码,并查看编译器是否仍在抱怨。