0

私はiosが初めてで、次の問題があります。

テーブルビューの要素数に応じて、テーブルビューの高さを増減したい。入力時にクライアントが出力時に 3 つ以上の要素を与える場合、デフォルトよりも 2 行大きいテーブルビューを表示したいと考えています。出力時の要素数が 2 または 1 の場合、デフォルトのテーブル ビューの高さが表示されます。幅は同じになります。これを行う方法?

これが私のコードです:

if (inputList.count>2)
    {
           CGRect bounds = [self.tableView bounds];
         [self.tableView setBounds:CGRectMake(bounds.origin.x,
                                        bounds.origin.y,
                                        bounds.size.width,
                                        bounds.size.height + 50)];
         CGRect tableFrame = [ self.predictiveDialog frame];
               tableFrame.size.height=75;
         [self.tableView setFrame:tableFrame];

    }
    else 
    {
         NSLog(@"decrease size");

         [self.tableView setBounds:CGRectMake(bounds.origin.x,
                                                    bounds.origin.y,
                                                    bounds.size.width,
                                                    bounds.size.height - 50)];
         CGRect tableFrame = [ self.predictiveDialog frame];
         tableFrame.size.height=44;
         [self.tableView setFrame:tableFrame];

    }

この場合、テーブルビューの幅は問題なく、入力要素が入ってくるときの高さは問題ありませんが、inputlist の要素の数に応じて、テーブルビューは ios Screen で上下に移動します。なんで?

4

3 に答える 3

1

デリゲートメソッドで境界を設定しないのはなぜですかcellForRowAtIndexPath:(NSIndexPath *)indexPath

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

    if([indexPath row]>2)
    {

         [tableView setBounds:CGRectMake(self.tableView.frame.origin.x,
                                        self.tableView.frame.origin.y,
                                        self.tableView.frame.size.width,
                                        self.tableView.frame.size.height + 50)];

    }

  // your other code
}

これがお役に立てば幸いです。あなたの質問を正しく理解していることを願っています。

于 2013-10-31T09:21:18.103 に答える
0
CGRect bounds = [self.tableView bounds];
[self.tableView setBounds:CGRectMake(...)];
CGRect tableFrame = [ self.predictiveDialog frame];
tableFrame.size.height=75;
[self.tableView setFrame:tableFrame];

[self.tableView setBounds:CGRectMake(...)]最後に tableView のフレームを設定したので、ここではコードは役に立ちません。

tableView の移動を避けるには、 を使用できますtableFrame.origin.y = self.tableView.frame.origin.y

于 2013-10-31T16:26:59.080 に答える
0

これを試して、

CGFloat height = self.tableView.rowHeight;
height *= inputList.count;

CGRect tableFrame = self.tableView.frame;
tableFrame.size.height = height;
self.tableView.frame = tableFrame;
于 2013-10-31T09:00:30.403 に答える