0

我是 ios 新手,遇到以下问题。

我想根据表格视图中元素的数量增加和减少表格视图的高度。如果在输入时客户端在输出时给出 3 个或超过 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

试试这个,

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 回答
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 回答