【问题标题】:iOS Warning: Semantic Issue (Multiple methods named 'setDelegate:' found)iOS 警告:语义问题(找到多个名为 'setDelegate:' 的方法)
【发布时间】:2012-01-26 20:15:47
【问题描述】:

我是 iOS 5 新手,遇到了委托和转场问题。

我有一个主视图控制器,它连接到 SettingsViewController。我使用以下代码使主 VC 成为设置 VC 的代表:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"SETTINGS"]) {
        [[segue destinationViewController] setDelegate:self];
    }
}

SettingViewController 然后转到多个选项屏幕。我试图让 SettingsViewController 成为这些选项屏幕的代表,但我收到警告,指出在两个地方(MainViewControllerSettingsViewController)找到了 setDelegate: 方法。

如何最好地解决这个问题?谢谢!

附:我发现只有在编译器设置中启用严格选择器匹配警告时才会收到此警告(根据教程书的建议)。丢开?解决问题?我不太确定...

【问题讨论】:

  • 关闭该警告。这没有帮助。如果你真的想要它,你可以通过将[segue destinationViewController] 的结果转换为适当的类型来抑制警告。
  • 谢谢,凯文。你能给我一个铸造的例子吗?我听说过这个词,但不太确定它会是什么样子。

标签: objective-c ios segue


【解决方案1】:

将视图控制器转换为已知类型就足够了:

[(SettingsViewController *)[segue destinationViewController] setDelegate:self];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    相关资源
    最近更新 更多