【问题标题】:Problems with UITableView when loading the view into the main window将视图加载到主窗口时 UITableView 的问题
【发布时间】:2011-02-09 22:21:03
【问题描述】:

我使用 XCode 使用 XIB 文件创建了一个名为 LoginViewController 的 UITableViewController 子类。然后我用 IB 打开 XIB 文件并将表格的样式设置为分组。最后我写了以下代码:

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
    LoginViewController *loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:[NSBundle mainBundle]];
    [window addSubview: loginViewController.view];
    window.backgroundColor = [UIColor blueColor];
    [window makeKeyAndVisible];
    [window layoutSubviews];
}

我将窗口的背景颜色设置为蓝色,以便您查看问题所在。 我放了一个链接到screenshot

正如您在屏幕截图中看到的那样,表格视图没有正确显示,因为正在设置主窗口底部和表格视图之间的边距,我不知道为什么。

如果我不使用分组的表格样式,则不会出现问题

【问题讨论】:

    标签: iphone cocoa-touch xcode uitableview interface-builder


    【解决方案1】:

    .xib 文件中的 UITableView 可能有一个负的垂直偏移量(即 y 轴),这意味着您需要调整原点(可能为 0,0)和框架(例如,320x400 ,或者你的父视图高度是什么)。

    【讨论】:

    • 似乎原点不在 (0,0) 中,因为 a 试图将其更改为 (0,0) 并没有发生任何事情,但这一行解决了它 loginController.view.frame = [UIScreen mainScreen ].applicationFrame;
    • 你这样做可能并没有解决你真正的问题,只是掩盖它。
    • 为什么说我没有解决问题?对我来说,如果我希望子视图与之对齐,它似乎需要位于与其父视图相同的框架中
    • 我的意思是,如果您尝试将原点更改为 0,0 但无法更改,则存在问题(您应该可以将原点设置为 0,0),因此,您通过执行另一个似乎可以解决问题的操作来掩盖该问题,而不了解实际问题是什么。
    【解决方案2】:

    这是使用 IBOutlet 时的常见问题...

    尝试通过编写代码以编程方式创建 UITableView。

    不要乱扔...

    在编码中手动指定UITableView的framesize...

    在编码中手动指定数据源和委托...

    你一定会解决你的问题...

    即使有任何问题,请发表评论...如果您得到解决,请点击正确的符号接受答案....

    享受这一天...

    【讨论】:

    • 这似乎不是一个好的解决方案,我应该可以使用 Interface Builder 完成这样一个简单的任务
    猜你喜欢
    • 2013-01-25
    • 2012-02-05
    • 1970-01-01
    • 2018-08-31
    • 2015-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多