set*_*fri 4 uitableview xib custom-cell uistoryboard
我有一个自定义静态UITableViewCell,我希望看起来与右侧细节单元格完全相同(UILabel在左侧,UILabel右侧),除了我希望右边UILabel是可编辑的UITextField.由于我想在故事板中的多个视图控制器中使用此单元,我决定最好的选择是创建一个MyEditableTableViewCell.xib文件,以及相应的*.h,m文件.我在MyEditableTableViewCell.h中有两个公共属性:
@property (weak, nonatomic) IBOutlet UILabel *textLabel;
@property (weak, nonatomic) IBOutlet UITextField *detailTextField;
Run Code Online (Sandbox Code Playgroud)
这些IBOutlets的连接UILabel,并UITextField在文件的.xib.在我的故事板中,我有一个自定义UITableViewController子类,我将所需的类更改UITableViewCell为MyEditableTableViewCell.我的视图控制器中有一个属性:
@property (weak, nonatomic) IBOutlet MyEditableTableViewCell *myCell;
但是,当我运行应用程序时,单元格显示为一个空白单元格.对它运行一些检查,我看到[myCell isKindOfClass:[MyEditableTableViewCell class]]返回true.但是,UITextField似乎永远不会得到实例化.当我试图改变时myCell.detailTextField.text,没有任何反应,myCell.detailTextField似乎是零.
任何帮助,将不胜感激!
你是如何创建实例的MyEditableTableViewCell?我的猜测是你做的[[MyEditableTableViewCell alloc] init]而不是从笔尖加载它们.
您在视图控制器中不需要该属性.您需要使用表格视图注册单元格笔尖-[UITableView registerNib:forCellReuseIdentifier:].在你的viewDidLoad.然后,当您发送dequeueReusableCellWithIdentifier:到表视图时,它将实例化nib,创建一个MyEditableTableViewCell,并将其返回给您.
如果您在故事板中布置静态单元格,则使用xib布置单元格有点困难.最简单的方法就是在故事板中布置单元格的子视图.如果您有一些相同类型的子视图,则可以将子视图复制并粘贴到每个单元格.
如果您真的想使用xib,最简单的方法是构建单元格的视图层次结构,如下所示:
MyEditableTableViewCell (in storyboard)
|
+- cell's content view (created automatically by UIKit)
|
+- UIView (top-level view of the xib)
|
+- UILabel (textLabel)
|
+- UITextField (detailTextField)
Run Code Online (Sandbox Code Playgroud)
因此,您将故事板中的单元格类设置为MyEditableTableViewCell.然后你创建你的xib.您将xib文件的所有者类设置为MyEditableTableViewCell.xib 不包含MyEditableTableViewCell.xib的顶级视图只是一个普通UIView视图,包含子视图(标签和文本字段).
在-[MyEditableTableViewCell initWithCoder:],这样做后self = [super initWithCoder:aDecoder],实例化XIB,传递self(小区)作为厦门国际银行文件的所有者.单元格可以具有连接到标签的出口和xib中的文本字段.
在实例化xib之后,将xib中的顶级视图添加为子视图self.contentView.如果您正在使用自动布局,请在顶级视图和内容视图之间创建约束.否则,将顶级视图frame设置为内容视图bounds,并将自动调整蒙版设置为UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight.
| 归档时间: |
|
| 查看次数: |
3506 次 |
| 最近记录: |