I'm using custom cells for table view and as per my code if no condition met it adds an empty cell or row in my table view. i'm new on iOS please help me in removing empty cells. here is my code snippet.
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let dict1 = arrMsg.object(at: indexPath.row) as! NSDictionary
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! ChatTableViewCell
let cell2 = tableView.dequeueReusableCell(withIdentifier: "Cell2") as! Chat2TableViewCell
if((String(describing: dict1.object(forKey: "SenderId")!)) == Auth.auth().currentUser?.uid && (ChatVC.selectedUser.replacingOccurrences(of: ".", with: "") == (String(describing: dict1.object(forKey: "ReceiverId")!))))
{
cell2.lblSender.text = (dict1.object(forKey: "Message") as! String)
cell2.lblSender.backgroundColor = UIColor(red: 0.09, green: 0.54, blue: 1, alpha: 1)
cell2.lblSender.font = UIFont.systemFont(ofSize: 18)
cell2.lblSender.textColor = .white
cell2.lblSender?.layer.masksToBounds = true
cell2.lblSender.layer.cornerRadius = 7
return cell2
}
else if ((String(describing: dict1.object(forKey: "ReceiverId")!)) == (Auth.auth().currentUser!.email?.replacingOccurrences(of: ".", with: ""))!)
{
cell.lblReceiver.text = (dict1.object(forKey: "Message") as! String)
cell.lblReceiver.backgroundColor = UIColor .lightGray
cell.lblReceiver.font = UIFont.systemFont(ofSize: 18)
cell.lblReceiver.textColor = UIColor.white
cell.lblReceiver?.layer.masksToBounds = true
cell.lblReceiver.layer.cornerRadius = 7
return cell
}
else {
let cell = UITableViewCell()
return cell
}
}
I think this is something that should be cleared up by your TableView's DataSource instead of you having to handle the logic of whether something exists or not in cellForRowAt
. You should be able to add logic to find the number of rows in each section/how many sections there are based upon your arrMsg
object
You need
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let dict1 = arrMsg.object(at: indexPath.row) as! [String:Any]
let str = dict1["SenderId"] as! String
if str == Auth.auth().currentUser?.uid {
let cell2 = tableView.dequeueReusableCell(withIdentifier: "Cell2") as! Chat2TableViewCell
cell2.lblSender.text = (dict1.object(forKey: "Message") as! String)
cell2.lblSender.backgroundColor = UIColor(red: 0.09, green: 0.54, blue: 1, alpha: 1)
cell2.lblSender.font = UIFont.systemFont(ofSize: 18)
cell2.lblSender.textColor = .white
cell2.lblSender?.layer.masksToBounds = true
cell2.lblSender.layer.cornerRadius = 7
return cell2
}
else
{
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! ChatTableViewCell
cell.lblReceiver.text = (dict1.object(forKey: "Message") as! String)
cell.lblReceiver.backgroundColor = UIColor .lightGray
cell.lblReceiver.font = UIFont.systemFont(ofSize: 18)
cell.lblReceiver.textColor = UIColor.white
cell.lblReceiver?.layer.masksToBounds = true
cell.lblReceiver.layer.cornerRadius = 7
return cell
}
}
it's your job to make sure that senderID should be the current user or the sending user , but not nil which will lead to returning the empty cell , also don't use NS
stuff in Swift
转到情节提要中,在检查更改分隔符样式中从默认值或任何其他值中选择表视图
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.