如何在 UITableView 中使用多个自定义单元格(>1)
How to use multiple custom cells (>1) in UITableView
我在整个 Stack Overflow 上搜索了这个问题的答案并找到了一些有用的答案,但我的情况有所不同,因为该部分中的行数要根据列在大批。我正在尝试创建一个使用两个自定义单元格的 table。第一个单元格显示个人资料信息,而第二个单元格显示新闻提要。
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return myProfileDM.profileArray.count
//return myProfileFeedDM.profileFeedArray.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) ->
UITableViewCell {
if indexPath.row == 0 {
let cell = tableView.dequeueReusableCellWithIdentifier("bio", forIndexPath:indexPath) as! ProfileTableViewCell
cell.followerNumber!.text = myProfileDM.profileArray[indexPath.row].followerNumberInterface
cell.followers!.text = myProfileDM.profileArray[indexPath.row].followersInterface
cell.following!.text = myProfileDM.profileArray[indexPath.row].followingInterface
cell.followingNumber!.text = myProfileDM.profileArray[indexPath.row].followingNumberInterface
return cell
}
else{
let cell = tableView.dequeueReusableCellWithIdentifier("feed", forIndexPath:indexPath) as! FeedTableViewCell
//let cell: FeedTableViewCell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "feed")
cell.profileFeedLabel!.text = myProfileFeedDM.profileFeedArray[indexPath.row].profileFeed
cell.profileDateLabel!.text = myProfileFeedDM.profileFeedArray[indexPath.row].profileDate
return cell
}
}
}
当我 运行 程序时,第一个单元格(带有标识符 bio)是唯一 loads/shows 向上的单元格。
我想该部分的行数有误。从你的变量名我怀疑它应该是
myProfileFeedDM.profileFeedArray.count + 1
请注意,在提要数组中,您必须使用 indexPath.row - 1
才能找到数组的正确索引,因为第一行是个人资料。
我没有从代码中看出它不起作用的任何原因。
尝试调试 cellForRowAtIndexPath 方法以查看每次调用时 indexPath 的值是多少
(或者只是将 println ("IndexPath: \(indexPath)")
放入您的 cellForIndexPath 方法)
PS:但只要您只需要一次个人资料单元格 - 我建议将 ProfileCell 移动到 table 或部分 header
我认为这会更合乎逻辑。
我在整个 Stack Overflow 上搜索了这个问题的答案并找到了一些有用的答案,但我的情况有所不同,因为该部分中的行数要根据列在大批。我正在尝试创建一个使用两个自定义单元格的 table。第一个单元格显示个人资料信息,而第二个单元格显示新闻提要。
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return myProfileDM.profileArray.count
//return myProfileFeedDM.profileFeedArray.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) ->
UITableViewCell {
if indexPath.row == 0 {
let cell = tableView.dequeueReusableCellWithIdentifier("bio", forIndexPath:indexPath) as! ProfileTableViewCell
cell.followerNumber!.text = myProfileDM.profileArray[indexPath.row].followerNumberInterface
cell.followers!.text = myProfileDM.profileArray[indexPath.row].followersInterface
cell.following!.text = myProfileDM.profileArray[indexPath.row].followingInterface
cell.followingNumber!.text = myProfileDM.profileArray[indexPath.row].followingNumberInterface
return cell
}
else{
let cell = tableView.dequeueReusableCellWithIdentifier("feed", forIndexPath:indexPath) as! FeedTableViewCell
//let cell: FeedTableViewCell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "feed")
cell.profileFeedLabel!.text = myProfileFeedDM.profileFeedArray[indexPath.row].profileFeed
cell.profileDateLabel!.text = myProfileFeedDM.profileFeedArray[indexPath.row].profileDate
return cell
}
}
}
当我 运行 程序时,第一个单元格(带有标识符 bio)是唯一 loads/shows 向上的单元格。
我想该部分的行数有误。从你的变量名我怀疑它应该是
myProfileFeedDM.profileFeedArray.count + 1
请注意,在提要数组中,您必须使用 indexPath.row - 1
才能找到数组的正确索引,因为第一行是个人资料。
我没有从代码中看出它不起作用的任何原因。
尝试调试 cellForRowAtIndexPath 方法以查看每次调用时 indexPath 的值是多少
(或者只是将 println ("IndexPath: \(indexPath)")
放入您的 cellForIndexPath 方法)
PS:但只要您只需要一次个人资料单元格 - 我建议将 ProfileCell 移动到 table 或部分 header 我认为这会更合乎逻辑。