Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS-多个UITableView?_Ios_Uitableview - Fatal编程技术网

iOS-多个UITableView?

iOS-多个UITableView?,ios,uitableview,Ios,Uitableview,我怀疑哪种方式是显示多个UITableView的最佳方式 我的第一种方法是将UITableViewController子类化,模拟3个uitableview,每个uitableview有3个部分和3个头,并使用委托协议的indexPath.section属性控制数据 我的第二种方法是将UIViewController子类化,添加3个UITableView,并使用委托协议的tableView属性控制数据 我已经制作了这两个类,它们看起来非常相似,结果发现UITableViewController子

我怀疑哪种方式是显示多个UITableView的最佳方式

我的第一种方法是将UITableViewController子类化,模拟3个uitableview,每个uitableview有3个部分和3个头,并使用委托协议的indexPath.section属性控制数据

我的第二种方法是将UIViewController子类化,添加3个UITableView,并使用委托协议的tableView属性控制数据

我已经制作了这两个类,它们看起来非常相似,结果发现UITableViewController子类更难给出间距和类似UI的内容。但总的来说,人们可以达到同样的目的


那么,这两种方法是实现这一情景的“最佳”方法,还是您发现了它们之间的区别?

您似乎已经回答了自己的问题
UITableViewController
旨在与其内置的
tableView
交互,而
UIViewController
可能更自然地允许您添加任意数量的内容。以后,试着问一个更具体的问题,因为这是一个非常基于意见的问题。

看起来你已经回答了自己的问题
UITableViewController
旨在与其内置的
tableView
交互,而
UIViewController
可能更自然地允许您添加任意数量的内容。将来,试着问一个更具体的问题,因为这是一个非常基于意见的问题。

您可以使用这两种方法,但是对于多个表视图,您将失去一个重要的
UITableView
功能-单元重用

如果没有滚动(表视图很小或是静态的),那么就没有问题。但是,如果将所有3个表放在一个scrollview中,并且有很多项,则表视图始终以全高呈现,并且它们的所有单元格都一起呈现

这可能会对呈现性能产生负面影响,特别是当您的一个表正在从数据库动态加载数据(例如核心数据)时

对于静态或小型表,没有真正的区别


还请注意,
UITableViewController
具有其他有用的属性-例如,拉动刷新视图。

您可以使用这两种方法,但是对于多个表视图,您将失去一个重要的
UITableView
功能-单元重用

如果没有滚动(表视图很小或是静态的),那么就没有问题。但是,如果将所有3个表放在一个scrollview中,并且有很多项,则表视图始终以全高呈现,并且它们的所有单元格都一起呈现

这可能会对呈现性能产生负面影响,特别是当您的一个表正在从数据库动态加载数据(例如核心数据)时

对于静态或小型表,没有真正的区别


还请注意,
UITableViewController
具有其他有用的属性,例如,拉动以刷新视图。

最好的方法是使用tableview标记。并通过标签检查条件。用于数据源和委托。在我当前的项目中,一个控制器中至少有3个tableview和3个collection视图。

最好的方法是使用tableview标记。并通过标签检查条件。用于数据源和委托。在我当前的项目中,一个控制器中至少有3个tableview和3个collection view。

为什么您会失去重复使用单元格的能力?@Paulw11一旦将table view放入scrollview中(table view不滚动,其父视图滚动),它将失去跟踪屏幕上可见单元格的能力。它实际上认为整个表格都是可见的,所有单元格都会同时显示。因此,它们不会被重用,因为所有的单元格都是可见的。好的,但是没有提到使用滚动视图。一种解决方案是为每个“表”使用一个节,另一种是在一个表中使用多个表视图view@Paulw11正如我所说的“如果没有滚动,那么就没有问题”和“如果将所有3个表放在一个滚动视图中…”在多个单独的表视图中使用一个父级滚动视图是一种常见的模式。但如果将所有3个表视图都放在一个滚动视图中,则只会丢失单元格重用,这既不是OP的建议,也不是您的答案中概述的。如果允许所有3个表独立滚动,那么重用就没有问题为什么会失去重用单元格的能力?@Paulw11一旦将表视图放入滚动视图中(表视图不滚动,其父视图滚动),它将失去跟踪屏幕上可见单元格的能力。它实际上认为整个表格都是可见的,所有单元格都会同时显示。因此,它们不会被重用,因为所有的单元格都是可见的。好的,但是没有提到使用滚动视图。一种解决方案是为每个“表”使用一个节,另一种是在一个表中使用多个表视图view@Paulw11正如我所说的“如果没有滚动,那么就没有问题”和“如果将所有3个表放在一个滚动视图中…”在多个单独的表视图中使用一个父级滚动视图是一种常见的模式。但如果将所有3个表视图都放在一个滚动视图中,则只会丢失单元格重用,这既不是OP的建议,也不是您的答案中概述的。如果允许所有3个表独立滚动,那么重用就没有问题