> Cell1:应该有一个图像和一个标签。
> Cell2:应该有两个标签。
> Cell3:应该有一个dayPicker。
我不想编写单元格的标签。我如何在Swift中管理这个。我必须为每个单元格编写自己的类吗?我可以使用一个tableviewController?如何在不同的单元格中填充数据?
我想生成一个tableView,像一个iOS设备的联系人应用程序。
我必须为每个单元格编写一个自己的类吗?=>是的,我相信。至少,我会这样做。
我可以使用一个tableviewController?=>是的你可以。但是,您也可以在View控制器中有一个表视图。
如何在不同的单元格中填充数据? =>根据条件,可以在不同的单元格中填充数据。例如,让我们假设你想要你的前两行像第一种类型的单元格。因此,您只需创建/重新使用第一类型的单元格并设置其数据。这将更清楚,当我告诉你屏幕截图,我猜。
让我给你一个ViewController中的TableView的例子。一旦你了解了主要概念,然后你可以尝试和修改反正你想要的。
步骤1:创建3个自定义TableViewCells。我命名它,FirstCustomTableViewCell,SecondCustomTableViewCell,ThirdCustomTableViewCell。你应该使用更有意义的名称。
步骤2:转到Main.storyboard并在您的View控制器中拖放一个TableView。现在,选择表视图并转到身份检查器。将“原型单元格”设置为3.这里,你只是告诉你的TableView,你可能有3种不同类型的单元格。
步骤3:
现在,选择TableView中的第一个单元格,并在身份检查器中,在自定义类字段中输入“FirstCustomTableViewCell”,然后在属性检查器中将标识符设置为“firstCustomCell”。
对所有其他人执行相同操作 – 将其自定义类分别设置为“SecondCustomTableViewCell”和“ThirdCustomTableViewCell”。还要将标识符连续设置为secondCustomCell和thirdCustomCell。
步骤4:根据需要编辑自定义单元类并添加插座。我根据你的问题编辑它。
P.S:你需要把插座放在类定义下。
所以,在FirstCustomTableViewCell.swift下,
class FirstCustomTableViewCell: UITableViewCell {
你会把你的标签和图像视图出口。
@IBOutlet weak var myImageView: UIImageView! @IBOutlet weak var myLabel: UILabel!
并在SecondCustomTableViewCell.swift中,添加两个标签like-
import UIKit class SecondCustomTableViewCell: UITableViewCell { @IBOutlet weak var myLabel_1: UILabel! @IBOutlet weak var myLabel_2: UILabel! override func awakeFromNib() { super.awakeFromNib() } override func setSelected(selected: Bool,animated: Bool) { super.setSelected(selected,animated: animated) } }
和ThirdCustomTableViewCell.swift应该看起来像 –
import UIKit class ThirdCustomTableViewCell: UITableViewCell { @IBOutlet weak var dayPicker: UIDatePicker! override func awakeFromNib() { super.awakeFromNib() } override func setSelected(selected: Bool,animated: animated) } }
步骤5:在您的ViewController中,为您的TableView创建一个Outlet并设置从storyboard的连接。此外,您需要在类定义中将UITableViewDelegate和UITableViewDataSource添加为协议列表。
所以,你的类定义应该看起来像 –
class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {
之后,将您的表视图的UITableViewDelegate和UITableViewDatasource附加到您的控制器。在这一点,你的viewController.swift应该看起来像 –
import UIKit class ViewController: UIViewController,UITableViewDataSource { @IBOutlet weak var tableView: UITableView! override func viewDidLoad() { super.viewDidLoad() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }
P.S:如果你在ViewController中使用TableViewController而不是TableView,你可以跳过这一步。
步骤6:根据Cell类别将图像视图和标签拖放到单元格中。然后从故事板提供到他们的插座的连接。
步骤7:现在,在视图控制器中写入UITableViewDatasource的必需方法。
import UIKit class ViewController: UIViewController,UITableViewDataSource { @IBOutlet weak var tableView: UITableView! override func viewDidLoad() { super.viewDidLoad() } func numberOfSectionsInTableView(tableView: UITableView) -> Int { return 1 } func tableView(tableView: UITableView,numberOfRowsInSection section: Int) -> Int { return 3 } func tableView(tableView: UITableView,cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { if indexPath.row == 0 { let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Default,reuseIdentifier: "firstCustomCell") //set the data here return cell } else if indexPath.row == 1 { let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Default,reuseIdentifier: "secondCustomCell") //set the data here return cell } else { let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Default,reuseIdentifier: "thirdCustomCell") //set the data here return cell } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }