【问题标题】:UIPickerView custom layout with .xib files带有 .xib 文件的 UIPickerView 自定义布局
【发布时间】:2015-07-04 10:19:05
【问题描述】:

我正在尝试创建一个自定义 UIPicker,其中每个项目都是一个 .xib 文件实例。

我收到Array index out of range 错误,代码如下:

func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView!)->UIView {
        return NSBundle.mainBundle().loadNibNamed("CustomItem", owner: self, options: nil)[0] as! UIView
}

【问题讨论】:

    标签: swift cocoa-touch uipickerview


    【解决方案1】:

    你需要检查这两个条件。

    • .xib 文件需要在顶层包含至少一个视图和
    • 该文件确实被命名为“customItem.xib”(而不是“CustomItem”或其他名称)。

    如果是这样,您的代码应该可以工作。

    【讨论】:

    • 我添加了一个图像,重命名了我的 xib 文件但不起作用:|
    【解决方案2】:

    正如 Mundi 所说,您正在做的事情应该有效,但可能效果不佳。

    我预测这样做会太慢,并且会使您的选择器视图“结结巴巴”。

    您发布的代码的另一个问题是,每次选择器请求视图时,它都会创建加载视图的新副本。如果用户滚动选择器视图然后回滚,则将重新创建先前加载的单元格。

    我建议您在首次加载选取器视图时将视图预加载到数组中。然后只需在拾取器视图询问它们时从数组中获取视图。

    【讨论】:

    • 我知道,但问题在于加载 xib 文件,我可以重用加载的布局。有什么建议吗?!
    • 将其分解为更简单的步骤并一次调试一个。
    【解决方案3】:

    我在.xib 文件中将根视图从Custom View 更改为View

    但不支持拖动 View,我从 github 示例项目中复制了 .xib 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多