在模态演示文稿样式中忽略了UITableView样式

时间:2013-02-20 17:08:42

标签: iphone objective-c ipad uitableview uimodalpresentationstyle

UITableView内的iPad上以模态方式显示UIViewControllerUINavigationController的样式时,我遇到了问题。很简单,我希望表格单元边框不会出现,所以在IB中我将分隔符样式设置为“无”,将分隔符颜色设置为“清除颜色”。在NIB中,我的分组表看起来像我希望它看起来的样式:

enter image description here

在NIB中,tableView被链接到文件所有者,因为它的源和委托。它也被设置为IBOutlet。文件所有者的类名正确设置为我想要加载此NIB的VC。在启动时我创建了这个VC的实例,然后我创建了一个UINavigationController的实例。我使用此VC(具有UINavigationController)初始化UITableView,然后以模态方式显示UINavigationController。在iPad上,我使用模态表单表示样式。

在我的AppDelegate的application:didFinishLaunchingWithOptions:方法中,我实例化并保留对VC及其父级的引用`UINavigationController:

self.loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
self.loginViewNavigationController = [[UINavigationController alloc] initWithRootViewController:self.loginViewController];

然后......在执行了一些逻辑之后(仍然在AppDelegate中)我以模态方式呈现UINavigationController

if (self.loginViewNavigationController != nil) {

    if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad)
        self.loginViewNavigationController.modalPresentationStyle = UIModalPresentationFormSheet;

        [self.window.rootViewController presentViewController:self.loginViewNavigationController animated:YES completion:nil];
}

iPhone上的世界一切都很好,因为我的手机边框不可见:

enter image description here

但是,在iPad上,单元格边框清晰可见,我的导航标题样式已全部消失(这是另一天的问题):

enter image description here

我真的很想知道为什么UITableView在iPad上忽略了这样的分隔符样式。我已经尝试将modalPresentationStyle设置为PageSheet和FullScreen并遇到同样的问题。我也尝试在VC的viewDidLoad(包含表视图)中设置这些属性无济于事。我也尝试过创建一个特定于iPad的NIB“LoginViewController~ipad”并以这种方式挂钩,但这似乎也没有什么区别。

这可能是我保留登录VC并且它包含UINavigationController的方式,但我无法确定,因为这在iPhone上运行得很好。

我猜这可能与iPad上的模态演示有关,对于我所有的搜索和尝试不同的组合,我无法弄清楚发生了什么。有什么想法吗?

[编辑]

我在iOS 6.1,5.1和5.0的模拟器中工作。我在所有版本中都看到了同样的问题。我现在坚持使用iOS 6.1,并且会向后移动以兼容。我还没有搬到设备上。

谢谢!

1 个答案:

答案 0 :(得分:0)

事实证明我的UINavigationController子类中有一些错误的样式代码(糟糕,我知道吗?),它没有正确设置navigationBar和table的样式。我已经解决了这个问题,现在UINavigationController看起来应该是这样。