在XIB文件中添加带有动态内容的UITableView
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在XIB文件中添加带有动态内容的UITableView相关的知识,希望对你有一定的参考价值。
有没有办法添加一个UITableView
(不是一个Table View Controller
,而是另一个视图中的TableView)并将其内容设置为"Dynamic Prototype"
中的XIB file
?
这在UITableView
中的视图控制器中添加storyboard
时工作正常。但是,当我尝试在XIB文件中执行相同操作时,我无法将其内容设置为"Dynamic Prototype"
。
更新
最近考虑这个问题,有一个相当直接的解决方案,即使用容器视图模式。
- 基本上,将容器视图添加到xib(或故事板)。
- 选择默认情况下附加到容器视图的视图控制器。
- 删除选定的视图控制器并将普通的
uitableviewcontroller
拖到IB画布上。 - 接下来,从容器视图控制拖动到
uitableviewcontroller
,并从可用的segues类型中选择“Embed”。 - 根据自己的喜好调整容器视图的大小,并为表视图控制器创建相应的代码文件。
- 将
uitableviewcontroller
重构为一个单独的storyboard / xib。
注 - 表视图控制器可以作为视图控制器的子视图控制器访问,该控制器在代码中保存容器视图。
为什么这是正确的模式? 1个故事板,1个控制器。 TableView拥有自己的控制器,因为它足够复杂,可以保证单独的控制器。使用容器视图模式可以维护单个责任模式。避免控制器臃肿。
原始答案的解决方法
如果你调整了桌面视图,请注意一个问题; xml将由Xcode重新生成,并要求您重新添加该属性。我已确认此编辑仍适用于9.3+版本。 https://github.com/mingsai/test-stub-tableviewdynamic-inxib.git提供样本存根。
原始答案
- 打开文件导航器
- 右键单击YourCustomView.xib文件
- 打开方式>源代码
- 找到以XML开头的XML
- 在XML
tableview
标记内找到style属性 - 在样式标记之前留空空格,粘贴在
dataMode="prototypes"
中
不是100%肯定,但我认为没有办法在UIB文件中将UITableView内容设置为“Dynamic Prototype”。
但是,您可以通过创建另一个名为“MyTableViewCell.xib”的XIB文件来实现相同的功能,该文件仅包含UITableViewCell,为单元格提供标识符,转到文件所有者并在身份检查器中将其设置为相同的视图控制器将class作为表视图xib,然后在视图控制器中创建一个IBOutlet,如下所示:
@property (nonatomic, assign) IBOutlet UITableViewCell *customCell;
然后在XIB中,单击文件所有者并按住Ctrl键并拖动到uitableviewcell并将单元格的出口设置为“customCell”属性。
(如果您在图形编辑器的左下角找到一个看起来像一个圆圈内的播放按钮的按钮,点击它,然后在该列中拖动),这可能会更容易完成。
毕竟,在cellForRowAtIndexPath中使用类似这样的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"CustomCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
[[NSBundle mainBundle] loadNibNamed:@"MyTableViewCell" owner:self options:nil];
cell = customCell;
// Other cell configurations....
希望有意义,适合您的需求!
以上是关于在XIB文件中添加带有动态内容的UITableView的主要内容,如果未能解决你的问题,请参考以下文章