我是iOS开发的新手。
我想检查一下我的桌子是否为空。如果是,我想:
增加第一行的高度并显示"No new messages!"
或
摆脱桌面,只在页面中央显示"No new messages"
。
我该怎么做?
答案 0 :(得分:2)
(假设你有一个数组,你想从中填充表视图。这是填充表视图的一种非常标准的方法。让我们称之为理论数组dataArr
。)
在您的数据来源中:
- (NSUInteger)tableView:(UITableView *)tv numberOfRowsInSection:(NSUInteger)section
{
if ([dataArr count] == 0) {
// empty table
return 1;
}
return [dataArr count];
}
- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)ip
{
UITableViewCell *cell = [tv dequeueReusableCellWithIdentifier:@"someCellID"];
if (cell == nil)
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"someCellID"] autorelease];
if ([dataArr count] == 0) {
// empty table
cell.textLabel.text = @"No new messages";
} else {
// configure as normally
}
return cell;
}
在你的代表中:
- (CGFloat)tableView:(UITableView *)tv heightForRowAtIndexPath:(NSIndexPath *)ip
{
if ([dataArr count] == 0) {
// empty table
return 88.0f; // 2 times the normal height
}
// else return the normal height:
return 44.0f;
}
答案 1 :(得分:1)
这应该有所帮助:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([tableView numberOfRowsInSection:1] == 0) {
return 200;//some other height
}else{
return 44;
}
}
答案 2 :(得分:1)
我想你有一系列试图显示的消息
您可以使用函数
为单元格定义自定义高度 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (messages.count == 0)
return 80;
else
return 44;
}
然后,当您创建单元格时:(确保“无新消息”单元格具有与常规单元格不同的单元格标识符,以便您的单元格重用不会弄乱)
- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (messages.count == 0) {
// create the "No New Messages" cell
}
else {
// create regular cells
}
}
答案 3 :(得分:0)
您基本上想要检查数据来源,看看- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
和- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
例如:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if ([data count] == 0) return 100;
else return 44;
}