以编程方式segue到新的viewcontroller

时间:2014-06-09 19:09:26

标签: ios objective-c uiviewcontroller

在if / else函数中,取决于满足的条件,我想向用户显示一些字符串作为结果。我试图通过以编程方式更改为新的viewController来实现此目的。我创建了一个方法'showresult',它将一个变量'result'作为参数,然后更改viewController并在那里显示'result'的内容。

为了更改viewController,我现在有:

enter image description here 在.h中定义为:

enter image description here

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

enter image description here

这里我得到''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上显示一些字符串

1 个答案:

答案 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对象。


注意:请不要包含代码的屏幕截图,而是复制代码并将文本粘贴到您的帖子中。除了其他优点,您还可以让其他用户复制您的代码并进行试用。