可以在cellForRowAt中注册uitableviewcell。

时间:2017-07-05 06:59:32

标签: ios uitableview

在cellForRowAt中注册uitableviewcell是否可以。在注册之前,我将通过出队和零检查来检查该单元是否注册的天气。因为我在桌面视图中使用它进行应用程序的类型使用,并且不确定是否需要使用单元格。

var cell = tableView.dequeueReusableCell(withIdentifier: textFieldCellIdentifier) as! TextFieldCell!
        if cell == nil {
            tableView.register(UINib(nibName: "TextFieldCell", bundle: nil), forCellReuseIdentifier: textFieldCellIdentifier);
            cell = tableView.dequeueReusableCell(withIdentifier: textFieldCellIdentifier) as! TextFieldCell!;
        }
        return cell!;

2 个答案:

答案 0 :(得分:0)

不错。它会多次注册,因为cellForRow atIndex会根据你的行数和数量来调用几次。如果你滚动你的tableView将会调用。

所以我认为最好在UITableViewCell方法中注册viewDidLoad一次。

  tableView.register(UINib(nibName: "TextFieldCell", bundle: nil), forCellReuseIdentifier: textFieldCellIdentifier);

答案 1 :(得分:0)

不,不行!

将细胞注册到表格是一个时间过程。

如果您要将register(_, forCellReuseIdentifier: _)添加到tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath),则此注册将多次执行,从而导致非常小但不必要的性能问题,因此无需执行此操作。

尝试将其放入viewDidLoad()或类似方法。