【问题标题】:iOS Master Detail app - detail shows only the first timeiOS Master Detail 应用程序 - 仅第一次显示详细信息
【发布时间】:2012-10-26 09:46:36
【问题描述】:

我在Master中有很多行,第一次点击一行,内容显示在Details中。我回去,选择一个新行,或同一行,它会在Details中显示“Detail view content goes here”。我疯狂地追踪,使用 NSLog 以防它是某种事件重新排序,在视图和 UIControl 实例中使用 setNeedsDisplay。一切都按正确的顺序跟踪正常,但没有显示新内容。 NSLog 显示新内容在控件中,只是不显示。欢迎任何帮助,这让我发疯了。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"showDetail"]) {
        NSIndexPath *indexPath = [[self tableView] indexPathForSelectedRow];
        NSObject *object = [[[self objects] objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]];
        [[segue destinationViewController] setDetailItem:object];
    }
}

【问题讨论】:

  • didSelectRowAtIndexPath: 方法中的代码似乎有问题。 “Detail view content goes here”来自 XCode 模板中的 DetailViewController。一般来说,尤其是在这种情况下,您应该提供您的代码。至少形成上述方法。
  • didSelectRowAtIndexPath: 的代码添加到您的问题中 - 否则这纯属猜测。
  • 如果您使用情节提要,等效的方法是 prepareForSegue 方法。
  • 发现问题了。我正在通过向接收者发送消息进行更新。我已经包含了设置接收器的代码,但假设它在设置后不会更改。事实证明,每次都会创建新的详细视图,因此之前的链接将无效。

标签: ios objective-c rendering master-detail


【解决方案1】:

我正在通过向发件人发送消息进行更新。我已经包含了设置发件人的代码,例如详细视图,但假设它在设置后不会更改。事实证明,每次都会创建新的详细视图,因此之前的链接将无效。通过在每次构建视图时简单地重新保存发送方来修复它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 2011-03-03
    • 1970-01-01
    • 2017-11-24
    • 2019-05-17
    相关资源
    最近更新 更多