【问题标题】:initiate a segue from another viewController从另一个 viewController 启动 segue
【发布时间】:2012-05-24 07:54:46
【问题描述】:

我正在尝试从另一个 viewController 触发 segue:因此通常通过点击 TVC 上的 Cell 来触发 segue。但是第一次启动应用程序时,我需要用户设置一些配置。

我正在尝试从 App 显示的第一个 viewController(也是一个 TVC)中触发这个 segue。所以我在 SettingsTVC(segue 所在的位置)上创建了一个公共方法。该方法的实现如下:

-(void)setStuff{

    [self performSegueWithIdentifier:@"setStuffFromSettings" sender:self];

}

在第一个 viewController 上,我单击按钮执行以下操作:

[self.tabBarController setSelectedIndex:4];

SettingsTVC *settings=[[SettingsTVC alloc]init];
[settings setStuff];

根据 NSLogs,方法被正确调用,但应用程序崩溃告诉我:

'Receiver (<SettingsTVC: 0x812d730>) has no segue with identifier 'setStuffFromSettings''

也许我期望太高了?我无法设置另一个 segue,因为它会使事情变得非常复杂,而且我不希望从多个地方访问 viewController(我认为 Apple 也不喜欢它)。

有什么想法吗?提前致谢!

【问题讨论】:

    标签: ios xcode segue uistoryboardsegue


    【解决方案1】:

    您没有连接到您从其调用 performSegue 的 VC 的具有该 ID 的 segue。见下图。视图控制器之间的连接必须正确命名。

    检查您的连接并确保名称匹配。

    【讨论】:

    • 谢谢,但我确实正确命名并引用了 segue。这就是为什么我发现自己对这个错误感到困惑。实际上,作为测试,我在 segue 起源的 viewController 上添加了一个按钮,并添加了 [self performSegueWithIdentifier:@"setStuffFromSettings" sender:self];代码,它的工作原理。当我尝试通过公共方法从另一个 viewControler 启动它时它不起作用。
    • 无论你以哪种方式连接它都无关紧要,但我总是将我的 Segue 连接到 VC,然后在 didSelectRowAtIndexPath 方法中调用 performSegue。如果您需要更多帮助,您需要将该项目压缩并通过电子邮件发送给我,或者发布您的故事板的屏幕截图,其中包含所有 Segue 的名称以及您遇到问题的 VC 的代码。
    • 我今天一回到家就试试你的建议。谢谢。
    猜你喜欢
    • 2015-08-04
    • 2015-11-23
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    相关资源
    最近更新 更多