繁体   English   中英

对新ViewController的程序化选择

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM