【问题标题】:Change the UITableViewStyle for different iOS versions为不同的 iOS 版本更改 UITableViewStyle
【发布时间】:2013-11-12 06:03:43
【问题描述】:

我必须为ios7/6 设计表格视图 - 在ios6 我需要实现一个表格视图分组样式,在ios7 我需要一个简单的样式。所以在情节提要中,我将样式更改为普通样式,并且在UITableViewController 子类的 viewDidLoad 中,我有这样的内容:

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

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

【问题讨论】:

  • 你不能在一个方法中改变 self 并期望它真正改变你是谁......你也许可以改变风格......但是当你说 self = ... 你只是在设置那时的局部变量

标签: ios objective-c uitableview


【解决方案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];
    }
}

这就是你需要的。

【讨论】:

    【解决方案2】:

    尝试继承 UITableView,并重写此方法:

    -(id)initWithFrame:(CGRect)frame style:(UITableViewStyle)
    {
        if (!IS_OS_7_OR_LATER) {
              [super initWithFrame:frame style:UITableViewStyleGrouped];
         } else
              [super initWithFrame:frame style:UITableViewStylePlain];
    }
    

    然后,在 Interface Builder 上,将 tableView 的类设置为您刚刚创建的派生类。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-17
        相关资源
        最近更新 更多