笔尖中的原型单元而不是故事板

Bes*_*esi 56 xcode objective-c nib ios uistoryboard

为了更好的可重用性,我想在Storyboard之外创建一个表视图.

现在,当我UITableView在Xcode中使用Nib 创建基于View的控制器时,我在nib文件中获得了默认的TableView.但是,我无法在Interface Builder中添加原型单元格,就像我在Storyboard中一样.

目前是不是可以在笔尖中添加原型单元格,或者我错过了什么.

非常感谢您的帮助.

Ric*_*ble 91

iOS 5在UITableView上包含一个新方法:registerNib:forCellReuseIdentifier:

要使用它,请在笔尖中放置UITableViewCell.它必须是笔尖中唯一的根对象.

您可以在加载tableView后注册nib,然后在调用dequeueReusableCellWithIdentifier时:使用单元标识符,它将从nib中拉出它,就像使用了Storyboard原型单元一样.

  • 唯一的缺点是你必须自己连接所有动作​​选择器,我只是通过在willDisplayCell期间调用addTarget然后在单元格的prepareForReuse方法中调用removeTarget来做.有什么比我更聪明的事情,那会让你在故事板中连接东西吗? (3认同)
  • 有没有办法将这些单元格的文件所有者设置为注册它们的控制器? (2认同)

Nai*_*hta 5

在Swift 4中:

  1. 从UITableViewCell创建新的CocoaTouch类,子类。
  2. 重要提示 -启用复选框“也创建XIB文件”将创建Swift文件和.xib文件
  3. 就像在情节提要中为原型单元所做的那样,在Xib中添加标签
  4. 将标签出口连接到新的swift文件
  5. 重要提示 - 在viewDidLoad中注册笔尖文件

    yourTableview.register(UINib.init(nibName: "CustomCellTableViewCell", bundle: nil), forCellReuseIdentifier: "Cell")
    
    Run Code Online (Sandbox Code Playgroud)

    (要么)

    yourTableview.register(UINib(nibName: "CustomCellTableViewCell", bundle: Bundle.main), forCellReuseIdentifier: "Cell")
    
    Run Code Online (Sandbox Code Playgroud)
  6. 像往常一样实现数据源和委托,并在cellForRowAtIndexPath中键入到CustomCell的类型。