我一直在网上试图解决这个问题,但无法找到明确的答案。这是发生了什么:
我创建了一个名为UITableViewController
的{{1}},我有两个自定义单元格:#34; FirstCell"和" SecondCell"。它们都使用该命名约定作为其重用标识符。我还为每个创建了单元类文件:" FirstTableViewCell"和#34; SecondTableViewCell"我相应地分配了每个单元格。我还为每个MainTableViewController
类文件中的单元格中的所有对象创建了IBOutlets
。
所以在UITableViewCell
我没有问题得到" FirstCell"加载。我这样做是这样的:
MainTableViewController
我现在如何拨打" SecondCell"?我知道我需要将我的返回值更改为2.但是,如何更改override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("FirstCell") as! FirstTableViewCell
cell.friendfirstnameLabel.text = "Michael"
cell.friendImageView.image = UIImage(named: "mikepic")
return cell
}
和dequeueReusableCellWithIdentifier
代码以使我的单元格都能正常工作? "第二小区"具有完全不同的布局,并定义了不同的对象。
答案 0 :(得分:1)
试试这个
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return yourArrayCount
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if indexPath.row % 2 == 0 {
let cell = tableView.dequeueReusableCellWithIdentifier("FirstCell") as! FirstTableViewCell
cell.friendfirstnameLabel.text = "Michael"
cell.friendImageView.image = UIImage(named: "mikepic")
return cell
} else {
let cell = tableView.dequeueReusableCellWithIdentifier("SecondCell") as! SecondTableViewCell
cell.friendfirstnameLabel.text = "Michael"
cell.friendImageView.image = UIImage(named: "mikepic")
return cell
}
}
答案 1 :(得分:0)
您只需要使用指定的重用标识符来消除您的第二个单元格。当您想要先使用和第二次使用时,这完全符合您的要求。
答案 2 :(得分:0)
您只需根据dequeueReusableCellWithIdentifier
更改发送到[indexPath row]
的参数值即可。如果为0,则使用"firstCell"
,如果为1,则使用"secondCell"
并为匹配的对象类型创建一个单元格。
答案 3 :(得分:0)
在这里,我看到你在单元格视图中显示静态文本。通常我们有NSArray数据来填充tableview中的数据,我们在umberOfRowsInSection方法中定义计数 因此,如果您知道要在哪个单元格中显示哪些数据就可以轻松使用,如果您可以轻松使用,那将非常容易。如果语句用于选择您想要的表格单元格视图
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return arrayCount
}
在检查计数后,您可以通过if语句
执行此操作override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
NSUInteger row = [indexPath row];
if [yourArray objectAtIndex:row] =="Michael" {
let cell = tableView.dequeueReusableCellWithIdentifier("FirstCell") as! FirstTableViewCell
cell.friendfirstnameLabel.text = "Michael"
cell.friendImageView.image = UIImage(named: "mikepic")
return cell
} else {
let cell = tableView.dequeueReusableCellWithIdentifier("SecondCell") as! SecondTableViewCell
cell.friendfirstnameLabel.text = “Unknown"
cell.friendImageView.image = UIImage(named: "mikepic")
return cell
}
}