我有ViewController
名为notificationsVC,其中包含两个tableView
s - notifTable和messageTable。在notifTable中,我有两种类型的UITableViewCell
s -
正如你所看到的,有一个关注你并评论/喜欢你的帖子模式。 到现在为止,我一直在使用两个UITableViewCell。 (重用标识符 - cell1和cell3 )
第一个我做了一个名为notification_cell.swift的教练触摸文件 和另一个notification2_cell.swift
notification_cell.swift
import UIKit
class notification_cell: UITableViewCell {
@IBOutlet weak var profilePic: UIImageView!
@IBOutlet weak var username: UILabel!
@IBOutlet weak var followNotif: UILabel!
}
notification2_cell.swift
import UIKit
class notification2_cell: UITableViewCell {
@IBOutlet weak var profilePic: UIImageView!
@IBOutlet weak var username: UILabel!
@IBOutlet weak var c_l_notif: UILabel!
@IBOutlet weak var postImage: UIImageView!
}
我总共有四个数组 -
var username = [String]()
var notif = [String]()
var u_id = [String]()
var p_id = [String]()
例如,当我进行API调用时,我得到了这个
username-> ["Anton Griezmann", "Anonymous", "Anonymous"]
u_id-> ["2", "30", "31"]
notif-> ["followed you", "liked your post", "liked your post"]
p_id-> ["", "9", "9"]
我想要做的是,只要p_id中有空白“”我知道我必须初始化cell1,否则就是cell3
这是我cellForRowAtIndexpath
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) ->
UITableViewCell{
var cell = UITableViewCell()
var index = [Int]()
if(tableView==self.notifTable)
{
for i in 0..<p_id.count {
if p_id[indexPath.row].isEmpty {
index.append(i)
//cell for followed you
let cell = tableView.dequeueReusableCellWithIdentifier("cell1", forIndexPath: indexPath) as! notification_cell
cell.username.text = username[indexPath.row]
cell.followNotif.text =
notif[indexPath.row]
return cell
}
else {
//cell for commented/liked
let cell = tableView.dequeueReusableCellWithIdentifier("cell3", forIndexPath: indexPath) as! notification2_cell
cell.username.text = username[indexPath.row]
cell.c_l_notif.text = notif[indexPath.row]
return cell
}
}
}
else
{
let cell = tableView.dequeueReusableCellWithIdentifier("cell2", forIndexPath: indexPath)
cell.textLabel?.text = "hola"
return cell
}
}
我运行时得到的是
这是第一个被重写的单元格。我需要一种方法来找出哪个单元应该在什么indexPath初始化,但不能想到如何。欢迎任何建议!
答案 0 :(得分:2)
首先,您在cellForRowAtIndexPath
尝试返回if - else
块内的单元格时返回了错误的单元格,如果要检查p_id[indexPath.row]
,则""
表示它是空的,所以你可以检查它的长度或使用isEmpty
的{{1}}函数,也没有必要经过循环。
String