使用autolayout逐步显示tableview的单元格?

时间:2015-07-17 20:14:35

标签: ios swift uitableview autolayout

我在UIViewController中有一个tableview来显示注释。此tableview的高度取决于注释的数量和大小。细胞是动态的。 我使用autolayout,所以我的tableview有一个高度约束。我以编程方式设置此约束: override func viewDidLayoutSubviews(){     self.heightCommentsTableView.constant = self.commentsTableView.contentSize.height + 50 } 如果我一次显示所有评论,它就有效。 但是,我希望使用这种方法显示每5条评论5:在swift中为UITableView加载更多因为性能问题而显示我的视图 (在推送视图之前加载了我的所有注释) 我注意到当我设置约束时,它会为所有注释调用cellForRowAtIndexPath,而不仅仅是前5个注释。 我不知道该怎么做。 编辑 var allCommentsArray:NSMutableArray = [] var元素:NSMutableArray = [] var range = 5 var currentPage = 0 var nextpage = 0 override func viewDidLoad(){     super.viewDidLoad()     allCommentsArray = NSMutableArray(array:comments)     elements.addObjectsFromArray(allCommentsArray.subarrayWithRange(NSMakeRange(0,range))) }  func tableView(tableView:UITableView,numberOfRowsInSection section:Int) - > Int {     返回comments.count } override func tableView(tableView:UITableView,willDisplayCell cell:UITableViewCell,forRowAtIndexPath indexPath:NSIndexPath){     self.nextpage = self.elements.count - 5     if indexPath.row == nextpage {            self.currentPage ++            self.nextpage = self.elements.count - 5            self.elements.addObjectsFromArray(self.allCommentsArray.subarrayWithRange(NSMakeRange(self.currentPage,self.range)))            tableView.reloadData()     } }  func tableView(tableView:UITableView,cellForRowAtIndexPath indexPath:NSIndexPath) - > UITableViewCell {      让cell = tableView.dequeueReusableCellWithIdentifier(" CommentCustomTableViewCell",forIndexPath:indexPath)为! CommentCustomTableViewCell      self.configureCell(cell,atIndexPath:indexPath)      返回细胞 }

1 个答案:

答案 0 :(得分:0)

表格视图将为其即将创建的每个可见单元格调用tableView(_:cellForRowAtIndexPath:),其数量将根据每个部分中的部分数和单元数确定。您可以通过实施tableView(_:numberOfRowsInSection:)的{​​{1}}和numberOfSectionsInTableView(_:)方法让表格知道这些金额。因此,如果要控制在给定时间可能创建和显示的单元格数量,则必须通过根据所需的逻辑添加和删除来管理数据源中的该状态。在您链接的答案中,您可以看到他被称为UITableViewDataSource以逐步添加更多元素。