如何在swift中以编程方式实现具有多个原型单元的UITableViewController

时间:2015-07-13 18:31:46

标签: ios objective-c swift uitableview

我刚开始学习swift,我使用StoryBoard在附加图像中创建了一个设置页面。使用的参考链接是http://shrikar.com/xcode-6-tutorial-grouped-uitableview/

enter image description here

同样的事情我想以编程方式进行,即我想实现 cellForRowAtIndexPath 函数,该函数具有不同的原型单元格,如下图所示。 如果可能的话,请参考给定的示例UI给出示例。

由于

2 个答案:

答案 0 :(得分:1)

请仔细阅读dequeuereusablecellwithidentifier。如果您使用的是Storyboard,请使用UITableViewCell添加reusableIdentifier

答案 1 :(得分:1)

一个很好的开始就是Apple创建的这个project。它包含各种各样的东西,并且是一个演示应用程序。这将提供开始使用UITableViewUITableViewCell时所需的所有常规信息。

1.为您希望在tableView中看到的每个自定义单元格创建一个视图(XIB)文件。虽然你可以在代码中进行布局设计,但我建议你从视觉方法开始,看看怎么做,因为你必须能够自动操作自动布局,约束,大小类等等。

2.创建一个包含单个表视图的UIViewController。

3.为您在步骤1中创建的每个单元格(XIB)创建一个Cocoa Touch类文件(.swift)。在这些文件中,您应该引用您在单元格中包含的内容(UILabels,UIImageViews等) 。不要忘记单元格应该具有相同的类(打开XIB文件,右侧面板上的第三个图标)

4.为您在故事板中创建的UIViewController创建一个Cocoa Touch类文件(.swift)。参考(鼠标拖动)此Cocoa Touch类中的tableView。确保故事板中的UIViewController具有此类集(自定义类字段,与步骤3中的单元格相同)

5.在ViewDidLoad方法中为单元格注释nib

         tableView.registerNib(UINib(nibName: "topCell", bundle: nil), forCellReuseIdentifier: "topCell")
         tableView.registerNib(UINib(nibName: "contentCell", bundle: nil), forCellReuseIdentifier: "contentCell")
         tableView.rowHeight = UITableViewAutomaticDimension; //<--Calculates rows height
         tableView.estimatedRowHeight = 44.0;                 //   automatically (iOS 8+)

6.在带有tableView的UIViewController上,单击右侧面板上的最后一个按钮,然后拖动数据源&#34;以及&#34;数据委托&#34;到相同的视图控制器(黄色圆形符号)。

7.确保你的Cocoa Touch类(在步骤4中创建)符合协议UITableViewDataSource,UITableViewDelegate(通过实现必要的方法)

class FeedVC: UIViewController, UITableViewDataSource, UITableViewDelegate {
} // <-- your class for the UIViewController with tableView


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
}

如果你不完全确定如何实现这些必需的方法,你可以在我在帖子开头引用的项目中查找它们。