我有一个已注册两个自定义笔尖单元的表格视图。单元及其对应的连接类彼此完全独立。
基于条件的表视图应显示已注册的两个单元格之一:
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问题,但是它们似乎处理了该项目不使用的嵌套(父子)笔尖(它们是单个的)。
有什么想法我做错了吗?
答案 0 :(得分:0)
所有这些操作都在InterfaceBuilder中完成。在界面构建器中,打开包含tableviewcontroller的情节提要或xib。然后选择使用内容:动态原型,为原型单元格选择2。然后,您将获得2个TableView单元格。下一步是对每个xib中的单元格进行精确的操作。现在,没有加载笔尖,也没有注册。您仍然必须为每个单元格执行dequeueReusableCell。