【问题标题】:Changing the size of tableview programmatically以编程方式更改 tableview 的大小
【发布时间】:2014-06-25 02:00:02
【问题描述】:

我已经创建了一个这样的表格视图

@interface RootViewController : UITableViewController{

}

现在我想在显示之前更改 tableview 的原点和大小。

我该如何改变它?

编辑:

- (id) initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithStyle:UITableViewStyleGrouped];
    self.tableView.frame=CGRectMake(50, 210, self.view.frame.size.width, self.view.frame.size.height);
    return self;
}

我现在面临的问题是我设置了以下代码。现在表格视图仍然从我的视图控制器(0,0)的顶部位置显示,而不是根据我的 x,y 位置。但是如果我将样式更改为group 或plain 它只会正常发生。

【问题讨论】:

    标签: iphone uitableview


    【解决方案1】:

    看起来您已经创建了一个新的tableView,而不是尝试移动 InterfaceBuilder 为您创建的现有tableView。但是由于您还没有将新的tableView 添加到视图层次结构中,因此您看不到新的tableView,并且您还没有删除原始的...

    相反,只需移动原始的 tableView。在您的rootViewControllerviewWillAppear: 方法中,执行以下操作:

    -(void)viewWillAppear:(BOOL)animated
    {
        self.tableView.frame = CGRectMake(0, 310, self.view.frame.size.width,200);
    }
    

    【讨论】:

    • 超类实现中的某些内容是在 viewDidLoad 方法之后更改 tableView 的框架。您必须改为在 viewWillAppear 中设置它。我已相应地更改了答案 - 请尝试此操作,如果可行,请接受答案。
    • 仍然没有成功,目前我正在使用 MGSplitViewController 框架,我正在尝试更改左面板表格视图屏幕的 x,y 坐标的位置,我正在 iOS5 模拟器中对其进行测试。
    • 您需要开始记录您的方法以确保您的类设置正确,插座连接等...如果您将NSLog(@"View will appear: view:%@ controller: %@", self.view, self) 放在上面的viewWillAppear 方法中,控制台会说什么?
    【解决方案2】:

    您可能只需获取属性 *tableView * 来执行此操作

    tableView.frame = xxxxxx;
    

    但我认为你只需要一个 UIViewController 包含一个 UITableView

    UITableView tableView = [[UITableView alloc] initWithFrame:(**the size you want**)];
    [self.view addSubView:tableView];
    

    【讨论】:

    • 我面临的问题是我设置了以下代码 self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 310, self.view.frame.size.width,200) 样式: UITableViewStyleGrouped];现在表格视图仍然从我的视图控制器(0,0)的顶部位置显示,而不是根据我的 x,y 位置。但是如果我将样式更改为组或普通,它只会正确发生
    • 我认为你可以采取第二种方式,使用包含 UITableView 的 UIViewController,没有区别
    【解决方案3】:

    如果您使用 StoryBoard 并且设置了约束。 reloadData 将重置您将框架设置为的任何内容。相反,您应该修改约束。您可以通过创建一个出口然后更改常量来做到这一点。例如,下面我将约束变量链接到顶部约束,并通过将常量设置为 -60,将其向上移动。

    @property (weak, nonatomic) IBOutlet NSLayoutConstraint *tableConstraint;
    
    _tableConstraint.constant = -60.;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-06
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多