UITableview与一个以上的自定义单元格与Swift
我想使用一个UITableview与不同的自定义tableViewCells。我的3个细胞是这样的:
> Cell1:应该有一个图像和一个标签。 我不想编写单元格的标签。我如何在Swift中管理这个。我必须为每个单元格编写自己的类吗?我可以使用一个tableviewController?如何在不同的单元格中填充数据? 我想生成一个tableView,像一个iOS设备的联系人应用程序。
让我先回答你的问题。
我必须为每个单元格编写一个自己的类吗?=>是的,我相信。至少,我会这样做。 我可以使用一个tableviewController?=>是的你可以。但是,您也可以在View控制器中有一个表视图。 如何在不同的单元格中填充数据? =>根据条件,可以在不同的单元格中填充数据。例如,让我们假设你想要你的前两行像第一种类型的单元格。因此,您只需创建/重新使用第一类型的单元格并设置其数据。这将更清楚,当我告诉你屏幕截图,我猜。 让我给你一个ViewController中的TableView的例子。一旦你了解了主要概念,然后你可以尝试和修改反正你想要的。 步骤1:创建3个自定义TableViewCells。我命名它,FirstCustomTableViewCell,SecondCustomTableViewCell,ThirdCustomTableViewCell。你应该使用更有意义的名称。 步骤2:转到Main.storyboard并在您的View控制器中拖放一个TableView。现在,选择表视图并转到身份检查器。将“原型单元格”设置为3.这里,你只是告诉你的TableView,你可能有3种不同类型的单元格。 步骤3: 对所有其他人执行相同操作 – 将其自定义类分别设置为“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() } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |