4

私のセルはすべて、ユーザーが入力したテキストによって決定されるさまざまな高さを持っています。

最後のセルの高さがどのようなものであっても、残りのすべての空白セルの高さを決定(変更)するようです。

heightForRowAtIndexPathがこれらの残りの空のセルに対して呼び出されているようには見えません。また、CFRAIPも呼び出されていないようです。

誰かがこれを修正する方法またはそれが起こっている理由を知っていますか?

4

2 に答える 2

12

このコードを、Tableviewが配置されているviewControllerのviewDidLoadに配置します。

self.tableView.tableFooterView = [[UIView alloc] init];

于 2013-03-08T13:26:57.023 に答える
0

私もその問題に直面しています。そして、それは私を大いに苛立たせました。少し考えてみると、空白のセルが表示されるのはテーブルビューの特徴かもしれないと思います。空白のセルには最後のセルの高さを使用するのが妥当です。それ以外の場合、どの高さを使用するかを選択しますか?
黒いセルを表示することは受け入れられないと思います。私のようなスタイルが気に入らない場合は、これを試して空白のセルを取り除くことができます。

self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero]; 

また

self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
//then add view for separator line by yourself

また

    UITableView *tableView = [[UITableView alloc] initWithFrame:self.tableView.frame style:UITableViewStyleGrouped];
tableView.backgroundColor = self.tableView.backgroundColor;
self.tableView = tableView;

空白のセルを表示して高さを制御する必要がある場合は、セルを追加するのが最も簡単な方法/回避策かもしれません。例えば:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
   return self.dataArray == nil || self.dataArray.count == 0 ? 1 : self.dataArray + 1;
}

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    if(indexPath.count == self.dataArray.count){ //the last cell
       cell = [[UITableViewCell alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 50)];
    } else {
       cell = .... //as uausal
    }

    return cell;
   }

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    if(indexPath.count == self.dataArray.count){
      return 50;
   } else {
    return xxx; //as usual
   }
 }

これで、任意の高さを制御できます!。

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

リンクも参照できます。プレーンなUITableViewの「空の」セルの外観を変更するにはどうすればよいですか。

于 2015-07-24T17:52:46.067 に答える