静态单元格的内容没有出现 UITableView
Posted
技术标签:
【中文标题】静态单元格的内容没有出现 UITableView【英文标题】:Content of static cells not appearing UITableView 【发布时间】:2014-08-07 20:32:12 【问题描述】:我有一个UITableViewController
,它有一个带有静态单元格的表格视图。我添加了一些带有UIImageView
和UILabel
的服装单元格。 xcode 故事板中的一切看起来都很好:
由于单元格是静态的,我没有实现数据源方法,这是我的表格视图控制器代码:
#import "MainTableViewController.h"
@interface MainTableViewController ()
@end
@implementation MainTableViewController
- (void)viewDidLoad
[super viewDidLoad];
- (void)didReceiveMemoryWarning
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
@end
但是当我在模拟器中运行代码时,单元格的内容不会出现:
这是场景层次结构:
【问题讨论】:
你检查过你的自动布局约束吗? 【参考方案1】:带有静态单元格的 UITableView 也没有为我显示 - 我试图删除并重新添加 segue。一切都已正确设置。诀窍....
诀窍是从 UITableViewController 子类中删除以下行、单元格和部分方法。它们是由 Xcode 自动添加的,但如果您使用的是静态单元格,则不希望它们出现在您的类中。
– (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
– (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
– (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
删除这些方法后,您的单元格将正确显示。
【讨论】:
很高兴在投入宝贵时间搜索更多内容之前找到了您的答案 给这家伙一枚勋章! 对不起,我只能给你 1 个。这应该是公认的答案。【参考方案2】:我认为你的约束有问题!如果你对单元格内的元素有错误的约束,元素将不会显示!
【讨论】:
@Arayn kheyli khobi:D【参考方案3】:请确保您在表格视图的内容选项中选择了“静态单元格”
【讨论】:
正如我在帖子中提到的(现在仔细检查),表格视图的内容设置为静态单元格。【参考方案4】:我有一个 UITableViewController,它有一个带有静态单元格的 表格视图
您确定您的静态表格单元格位于 UITableViewController 中,而不是嵌入在 UIViewController 中的 UITableView 中吗? Storyboard 将允许您将表格单元格添加到嵌入在标准视图控制器中的表格视图中,但这在运行时不起作用。根据 ios 的版本,您可能会或可能不会收到错误。如果答案是肯定的,那么您需要将静态表格单元格直接添加到 UI**Table**View**Controler**。
【讨论】:
是的,单元格和部分位于我的表格视图控制器内部的表格视图中。我照你说的做了,但细胞也消失了! 我在帖子中添加了场景层次结构。【参考方案5】:我遇到了同样的问题。如果您有自定义 TableViewController 但 TableViewCell 样式未设置为自定义,则会发生这种情况。 我通过将 UITableViewController 从我的自定义控制器更改为通用控制器来解决问题。我的猜测是,如果控制器是自定义的,那么我们会说我们将以编程方式提供数据,因此不会显示情节提要数据。必须有办法绕过它,但我对 iOS 太陌生,无法调查。此外,对于原型设计,通用 UITableViewController 工作得很好。 所以: 转到“主表视图控制器” 选择身份检查员。 将类从您的自定义类更改为 UITableViewController
或者使用您的自定义控制器,但在属性检查器中将 TableViewCell.Style 更改为自定义
【讨论】:
【参考方案6】:您是否将UITableViewController
的dataSource
和delegate
设置为self
?
【讨论】:
【参考方案7】:这些天我遇到了同样的问题。正如雅利安所说,我必须在UISplitViewController
的主视图中为标签添加约束。否则,内容不是“disappear
”,而是位于表格视图单元格的左侧,超出了屏幕边界。将尾随边距设置为 superview 对我有用。
【讨论】:
【参考方案8】:在 Storyboard 中创建原型一切都很好,但您仍然需要在运行时通知单元格的 tableView 属性。
为此,您需要使用重用标识符来命名每个单元格:
然后在代码中明确命名每个重用标识符:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
您的问题在于您没有实现数据源,它的功能与标题完全相同:提供数据。
祝你好运
【讨论】:
有两种填充表格视图的方法,一种是在运行时使用来自数据库或 Web 请求的数据动态创建单元格,另一种是静态使用 xCode 故事板和设计那里的细胞。 啊啊啊啊,我没有注意到我们使用了 Xcode 中有史以来最糟糕的添加。您仍然需要提供数据源。我将进行编辑,概述需要完成的工作。 不,您不需要提供数据源。 “数据”,即单元格中的文本,由情节提要提供。 这就是不使用动态方式的全部意义!如果我仍然需要提供数据源,那么以静态方式执行它有什么意义?! 只有动态重用的单元格才需要重用标识符。根据定义,静态单元格不会被重用,因此不需要标识符。以上是关于静态单元格的内容没有出现 UITableView的主要内容,如果未能解决你的问题,请参考以下文章