【问题标题】:How to fix warning on iPad segue如何修复 iPad segue 上的警告
【发布时间】:2012-12-25 02:36:25
【问题描述】:

我想知道是否有人可以向我解释这一点。我正在使用情节提要构建一个通用应用程序。 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。

就像我说的,它有效,所以也许这不是一个真正的问题,但我对不断出现的警告以及不确定如何/是否可以修复它感到有点恼火。

稍后我会尝试发布故事板的图片,希望有助于解释这一点。

【问题讨论】:

    标签: iphone ios ipad uistoryboardsegue


    【解决方案1】:

    您所要做的就是将您使用[[segue destinationViewController] topViewController] 检索到的UIViewController 类型转换为NotesListViewController

    所以,你会有listNotesView = (NotesListViewController *)[[segue destinationViewController] topViewController];

    顺便说一句,您的代码有效但生成警告的原因是,无论您调用什么类型的对象,内存中指向的实际类型才是最重要的(您可以将某些东西声明为 @ 987654324@ 并使用[NSDictionary alloc] 分配内存,但这只会导致混乱)。 -topViewController 返回一个 UIViewController 对象,因为沿线某处,它返回的任何类都将继承自 UIViewController,就像您的 NotesListViewController 一样,但它没有足够的信息来比这更具体,所以你必须通过类型转换对象来给编译器额外的信息。

    【讨论】:

    • 感谢您的解释和解决方案!这很有道理。
    猜你喜欢
    • 2019-08-08
    • 2020-11-28
    • 2017-10-25
    • 2017-07-03
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多