gpt4 book ai didi

iphone - 如何修复 iPad segue 上的警告

转载 作者:行者123 更新时间:2023-11-29 04:13:36 26 4
gpt4 key购买 nike

我想知道是否有人可以向我解释这一点。我正在使用 Storyboard构建一个通用应用程序。 iPhone 版本有一个导航 Controller ,带有一个主 ListView 和一个子 ListView (两者都是 TableView Controller 。

iPad 应用程序使用分割 View Controller 来实现与 iPhone 相同的功能(主列表,带有详细列表)。一切都很好,但是当使用“替换”segue 转换到分割 View Controller 上的新详细 View 时,我必须将新的详细 View 嵌入到它们自己的导航 Controller 中,而我不需要在 iphone 上执行此操作(它已经在导航 Controller 内。(希望这有意义)

我的代码(有效)最终看起来像这样:

- (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。

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

我会尝试稍后发布 Storyboard的图像,希望这有助于解释这一点。

最佳答案

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

因此,您将拥有 listNotesView = (NotesListViewController *)[[segue destinationViewController] topViewController];

顺便说一句,您的代码可以工作但生成警告的原因是因为无论您调用什么类型的对象,内存中指向的实际类型才是重要的(您可以将某些内容声明为一个 NSString 并使用 [NSDictionary alloc] 分配内存,但这只会导致困惑)。 -topViewController 返回一个 UIViewController 对象,因为它返回的任何类都将从 UIViewController 继承,就像您的 NotesListViewController code> 确实如此,但它没有足够的信息来比这更具体,因此您必须通过对对象进行类型转换来为编译器提供额外的信息。

关于iphone - 如何修复 iPad segue 上的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14024465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com