更改不同iOS版本的UITableViewStyle

时间:2013-11-12 06:03:43

标签: ios objective-c uitableview

我需要ios7/6的tableview设计 - 在ios6我需要实现一个tableview分组样式,在ios7我需要一个简单的样式。所以在故事板中我将样式更改为plain并在UITableViewController的子类的viewDidLoad中我有这样的内容:

if (!IS_OS_7_OR_LATER) {
    self = [[UITableViewController alloc] initWithStyle:UITableViewStyleGrouped];
}

但它不起作用。我尝试使用initWithCoder方法,但无法获得良好的结果。有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

- (id)initWithFrame:(CGRect)frame style:(UITableViewStyle)
{
    bool isLowerOrEqualToSix = (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1);

    if (isLowerOrEqualToSix) { // iOS 6 or lower
        [super initWithFrame:frame style:UITableViewStyleGrouped];
    } else { // iOS 7 or higher
        [super initWithFrame:frame style:UITableViewStylePlain];
    }
}

这就是你需要的。

答案 1 :(得分:0)

如tableview类引用中所述,必须在初始化时设置style属性。此后无法更改。在代码中,您可以使用if语句检查ios版本并使用适当的样式进行初始化。使用故事板,请点击此链接How to switch to different Storyboard for iPhone 5?