1

我目前有一个 uitableview 到位。

数据是从一个 sqlite 文件中获取的。

sqlite 文件的每一列将代表一个列表:标签、图像等

我用来获取行的代码是

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
  AppDelegate* appdelegate = (AppDelegate*) [[UIApplication sharedApplication]delegate];
  return [appdelegate.arrayDatabase count];

}

填充单元格的代码

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

  static NSString *simpleTableIdentifier = @"simpleTableIdentifier";

  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
  if (cell == Nil)
  {
    cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:simpleTableIdentifier];
  }

  AppDelegate * appdelegate = (AppDelegate*)[[UIApplication sharedApplication]delegate];
  ShowsList *sShows = [appdelegate.arrayDatabase objectAtIndex:indexPath.row];
  cell.textLabel.text = [sShows strName ];
}

我遇到的问题:

我想使用标签列填充 ViewController1.tableview 的单元格文本,但它返回空行并在视图中显示空行/单元格。

但是,我想通过计算空单元格并将计数应用于 numberOfRowsInSection: 方法或简单地隐藏空单元格来隐藏行。

隐藏 UITableView 中的空单元格如何隐藏 UITableView 中的部分?看起来类似但没有解决我的问题。

有人可以指出我正确的路径或提供答案:)

非常感谢

托马斯

4

5 回答 5

2

添加此代码

-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
    
    
    return [[UIView alloc]init];
    
}

或者

有替代解决方案

您可以在函数中设置 UITableView 的numberOfRowsInSection高度,高度为 [array count]*(cell height)

希望对你有帮助。。

于 2012-12-28T11:40:06.593 回答
1

只需实现这样的 reloadTableData 方法

- (void)reloadTableData
{
// do a reload maybe from db and get yourobjects eg dbItems
// _tableItems = [NSMutableArray array];
    for (ShowsList *list in dbItems) {
        if ([list strName].length) {
            [_tableItems addObject:list];
        } 
    } 
}

然后只需使用 _tableItems 数组来填充您的表格视图

使用 [self reloadTableData] 代替 [self.tableview reloadData]

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

  return _tableItems.count;

}

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

  static NSString *simpleTableIdentifier = @"simpleTableIdentifier";

  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
  if (cell == Nil)
  {
    cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:simpleTableIdentifier];
  }

  ShowsList *sShows = [_tableItems objectAtIndex:indexPath.row];
  cell.textLabel.text = [sShows strName ];
}
于 2012-12-28T12:16:06.193 回答
0

您应该创建数据对象的可变副本。首先迭代它。删除空/空白条目。现在将此修改后的集合用于 tableViewDelegate 方法。

于 2012-12-28T12:02:40.977 回答
0

假设您在从中填充 UITableView 的模型中获得 @""。

您可以像这样删除该空白:

[_arrays removeObjectIdenticalTo:@""];

并使用此过滤后的数组作为您的模型来填充表格视图。

于 2012-12-28T12:16:20.607 回答
0

在您的 viewDidLoad 中,将表格页脚设置为:

[yourTableView.tableFooterView setFrame:CGRectMake(0, 0, yourTableView.frame.size.width, 1)];

不使用页脚。但是将其框架设置为 sizeZero 可能会使应用程序崩溃,因此请使用高度为 1 的页脚。这对我有用。希望能帮助到你。

于 2012-12-28T12:28:35.360 回答