在单个UITableView

时间:2016-08-05 10:55:42

标签: ios swift xcode uitableview

我有ViewController名为notificationsVC,其中包含两个tableView s - notifTable和messageTable。在notifTable中,我有两种类型的UITableViewCell s -

enter image description here

正如你所看到的,有一个关注你并评论/喜欢你的帖子模式。 到现在为止,我一直在使用两个UITableViewCell。 (重用标识符 - cell1和cell3

enter image description here

第一个我做了一个名为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

        }


}

我运行时得到的是

enter image description here

这是第一个被重写的单元格。我需要一种方法来找出哪个单元应该在什么indexPath初始化,但不能想到如何。欢迎任何建议!

1 个答案:

答案 0 :(得分:2)

首先,您在cellForRowAtIndexPath尝试返回if - else块内的单元格时返回了错误的单元格,如果要检查p_id[indexPath.row],则""表示它是空的,所以你可以检查它的长度或使用isEmpty的{​​{1}}函数,也没有必要经过循环。

String