我想知道是否有人可以向我解释这一点。我正在使用故事板构建一个通用应用程序。iPhone 版本有一个导航控制器,带有一个主列表视图,然后是一个子列表视图(两者都是 tableview 控制器。
iPad 应用程序使用拆分视图控制器来实现与 iphone 相同的功能(一个主列表,一个详细列表)。一切都很好,但是当使用“替换”segue 转换到拆分视图控制器上的新详细视图时,我必须将新的详细视图嵌入到他们自己的导航控制器中,而我不需要在 iphone 上执行此操作(它已经在导航控制器中。(希望这有点道理)
我的代码(有效)最终看起来像这样:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NotesListViewController *listNotesView;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
listNotesView = [[segue destinationViewController] topViewController];
} else {
listNotesView = [segue destinationViewController];
}
if ([segue.identifier isEqualToString:@"NotesByDate"]) {
[listNotesView setGroupType:@"date"];
} else if ([segue.identifier isEqualToString:@"NotesByTopic"]) {
[listNotesView setGroupType:@"topics"];
} else if ([segue.identifier isEqualToString:@"NotesBySpeaker"]) {
[listNotesView setGroupType:@"speaker"];
}
所以...问题是 IF 语句的第一个条件是生成警告(从 UIViewController 分配给 NoteListViewController 的指针类型不兼容)。但是,它不是 UIViewController,而是 UITableViewController。在 iPhone 版本上,它应该是一个 UIView,但我在这里专门检查 iPad。
就像我说的那样,它有效,所以也许这不是一个真正的问题,但我对不断出现的警告以及不确定如何/是否可以修复它感到有点恼火。
我会尝试稍后发布故事板的图像,希望这有助于解释这一点。