【问题标题】:set frame viewcontrollers view in UINavigationController在 UINavigationController 中设置框架 viewcontrollers 视图
【发布时间】:2013-08-27 12:14:57
【问题描述】:

我试图改变VC的框架不起作用。这是我的代码:

AZControlViewController *vc = [[AZControlViewController alloc] init];
vc.tableView.frame = CGRectMake(0, 195, 320, 500);
self.vcMaster = [[[UINavigationController alloc] initWithRootViewController:vc] autorelease];

AZControlViewControllerisUITableViewController

谁能帮帮我?

谢谢!

【问题讨论】:

    标签: ios objective-c uiviewcontroller uinavigationcontroller uitableview


    【解决方案1】:

    使用断点或 NSLog 查看 tableViewvc 属性。应该是nil。发生这种情况是因为视图控制器的视图组件只有在视图控制器出现后才会被初始化。

    要正确更改 tableView 的框架,请在 AZControlViewController.m 内,实现上述方法并根据需要更改框架。

    -(void)viewDidLayoutSubviews
    {
        [super viewDidLayoutSubviews];
        self.tableView.frame = CGRectMake(0, 195, 320, 500);
    }
    

    如果您仍想从外部类设置此框架,请创建一个属性来存储您想要的框架,然后将此框架分配给 tableView 的框架。

    AZControlViewController.h:

    @property (nonatomic, assign) CGRect tableViewFrame;
    

    AZControlViewController.m:

    -(void)viewDidLayoutSubviews
    {
        [super viewDidLayoutSubviews];
        self.tableView.frame = self.tableViewFrame;
    }
    

    还有其他地方:

    AZControlViewController *vc = [[AZControlViewController alloc] init];
    vc.tableViewFrame = CGRectMake(0, 195, 320, 500);
    

    【讨论】:

    • 非常感谢,我已经为 HOURS 解决了一个问题,这就是问题所在。
    【解决方案2】:

    不要为了这个目的继承UITAbleViewController。在 (0, 195, 320, 500) 和常规的 UITableViewController(或 AZControlViewController,分别是控制 talbe 视图的 AZControlViewController 的部分)内有一个 UIContainterView 会好得多。它的表格视图的框架将是 (0,0,320,500)。

    【讨论】:

      【解决方案3】:

      好的。 jmgarben .. 您应该在下一个视图控制器的 viewWillAppear 或 viewDidLoad 中定义框架。它将起作用。

      如果你还有疑问..你可以问。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多