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 のセル テキストを入力したいのですが、null 行が返され、ビューに空の行/セルが表示されます。

ただし、null セルをカウントして numberOfRowsInSection: メソッドにカウントを適用するか、単に空のセルを非表示にすることで、行を非表示にしたいと考えています。

UITableViewで空のセルを非表示にする& UITableViewでセクションを非表示にする方法は? 似たようなもののように見えますが、私の問題は解決しませんでした。

誰かが正しい道を教えてくれるか、答えを教えてください:)

本当にありがとう

トーマス

4

5 に答える 5

2

このコードを追加

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

また

代替ソリューションがあります

numberOfRowsInSection高さを[配列カウント] *(セルの高さ)として、関数でUITableViewの高さを設定できます

それがあなたを助けることを願っています..

于 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.tableview reloadData] の代わりに [self reloadTableData] を使用します。

-(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

UITableView の作成元のモデルで @"" を取得していると仮定します。

次のように空白を削除できます。

[_arrays removeObjectIdenticalTo:@""];

そして、このフィルタリングされた配列をモデルとして使用して、テーブルビューを設定します。

于 2012-12-28T12:16:20.607 に答える
0

データ オブジェクトの変更可能なコピーを作成する必要があります。最初にそれを繰り返します。null/空白のエントリを削除します。この変更されたコレクションを tableViewDelegate メソッドに使用します。

于 2012-12-28T12:02:40.977 に答える
0

viewDidLoad で、テーブル フッターを次のように設定します。

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

フッターは使用しません。ただし、フレームを sizeZero にするとアプリケーションがクラッシュする可能性があるため、高さ 1 のフッターを使用してください。これでうまくいきました。それが役に立てば幸い。

于 2012-12-28T12:28:35.360 に答える