awakeFromNib()调用了两次

时间:2019-07-19 20:03:24

标签: ios swift xcode uitableview xib

我有一个已注册两个自定义笔尖单元的表格视图。单元及其对应的连接类彼此完全独立。

基于条件的表视图应显示已注册的两个单元格之一:

tableview代码:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    //Show only the table cells that have content.
    tableView.tableFooterView = UIView(frame: CGRect.zero)

    let rowData = FriendsTab.potentialFriendList[indexPath.row]

    if (rowData.pendingInvite){
        let cell = potentialFriendTableView.dequeueReusableCell(
            withIdentifier: requestCellIdentifier, for: indexPath)
            as! FriendRequestCell

        cell.activityIndicator.isHidden = true
        cell.activityIndicator.hidesWhenStopped = true

        cell.userName.text = firstName + " " + lastName

        return cell
    }
    else{
        let cell = potentialFriendTableView.dequeueReusableCell(
            withIdentifier: potentialCellIdentifier, for: indexPath)
            as! PotentialFriendCell


        cell.activityIndicator.isHidden = true
        cell.activityIndicator.hidesWhenStopped = true

        cell.userName.text = firstName + " " + lastName


        return cell
    }
}

单元格注册码(来自viewDidLoad):

    let potentialFriendXib = UINib(nibName: self.potentialCellIdentifier, bundle: nil)
    let requestFriendXib = UINib(nibName: self.requestCellIdentifier, bundle: nil)

    self.potentialFriendTableView.register(potentialFriendXib,forCellReuseIdentifier: self.potentialCellIdentifier)
    self.potentialFriendTableView.register(requestFriendXib,forCellReuseIdentifier: self.requestCellIdentifier)

出于某种原因,FriendRequestCell调用了awakeFromNib()两次,但是PotentialFriendCell可以按预期工作(一次调用)。

我已经搜索了一些(非常古老的)SO问题,但是它们似乎处理了该项目不使用的嵌套(父子)笔尖(它们是单个的)。

有什么想法我做错了吗?

1 个答案:

答案 0 :(得分:0)

所有这些操作都在InterfaceBuilder中完成。在界面构建器中,打开包含tableviewcontroller的情节提要或xib。然后选择使用内容:动态原型,为原型单元格选择2。然后,您将获得2个TableView单元格。下一步是对每个xib中的单元格进行精确的操作。现在,没有加载笔尖,也没有注册。您仍然必须为每个单元格执行dequeueReusableCell。