从带有表格视图的视图控制器加载详细视图上的内容会更有效吗?
我应该将变量从didSelectRowAtIndexPath:
方法传递到详细视图,还是更好地对服务器进行 JSON 调用并将数据加载到详细视图上的字典中?
当我通过该didSelectRowAtIndexPath:
方法将数据从视图控制器传递到详细视图时,我注意到一些滞后
谢谢你的帮助
从带有表格视图的视图控制器加载详细视图上的内容会更有效吗?
我应该将变量从didSelectRowAtIndexPath:
方法传递到详细视图,还是更好地对服务器进行 JSON 调用并将数据加载到详细视图上的字典中?
当我通过该didSelectRowAtIndexPath:
方法将数据从视图控制器传递到详细视图时,我注意到一些滞后
谢谢你的帮助
您的问题并不完全清楚数据来自哪里。我假设因为您提到了一个 JSON 调用,当您在表格视图上选择一个项目时,您需要进行 Web 服务调用以获取有关该项目的其他信息,然后再显示您的详细信息视图。
如果是这种情况,那么您应该在详细视图控制器中进行 Web 服务调用并加载数据。Apple 的界面指南建议您这样做以呈现响应性。在点击表格视图中的行后,将立即显示详细视图控制器。您可以在详细视图中使用活动指示器或加载图形,让用户知道正在下载其他信息。
这比等待数据下载然后才触发视图转换要好得多。
使用didSelectRowAtIndexPath:
方法将 id 或任何唯一变量发送到detailedViewController
... 并detailedViewController
使用此唯一变量或 id 从 json 中获取数据,viewDidLoad:
或者viewWillAppear:
这是发布数据的简单和最佳方式detailedViewController
如果您在表格视图控制器本身中已经拥有完整的数据,那么您可以传递一个对象而不是传递太多变量。只需创建一个域类,声明变量和对象,设置属性和综合。现在将此域类对象传递给您的控制器。但是,如果您在表格视图中有一些数据,并且您需要再次调用服务器以获取更多详细信息,您可以只传递 id 并仅在详细视图上进行服务器调用。
DetailView = [[DetailViewController]alloc]init];
DetailView.strValue = sValue.
[self.navigationController pushViewController:DetailView animated:Yes];
DetailView 是您详细视图的对象。导入此类,然后使其实例像上面一样,strValue 是详细视图中的字符串,sValue 是当前视图控制器中的字符串,其中有一些值传递给其他视图。
也检查这个链接。