我是 iOS 开发的新手。
我想检查我的桌子是否是空的。如果是,我想:
增加第一行的高度并显示"No new messages!"
或者
摆脱表格,只显示"No new messages"
在页面的中心。
我该怎么做?
我是 iOS 开发的新手。
我想检查我的桌子是否是空的。如果是,我想:
增加第一行的高度并显示"No new messages!"
或者
摆脱表格,只显示"No new messages"
在页面的中心。
我该怎么做?
(假设您有一个要从中填充表格视图的数组。这是填充表格视图的一种非常标准的方法。我们称之为理论数组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;
}
这应该有助于:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([tableView numberOfRowsInSection:1] == 0) {
return 200;//some other height
}else{
return 44;
}
}
我想您有一系列要显示的消息
您可以使用该功能为单元格定义自定义高度
- (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
}
}
基本上你想检查你的数据源,看看你是否在- (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;
}