Swift / UI Builder 中的程序化分页导航

Posted

技术标签:

【中文标题】Swift / UI Builder 中的程序化分页导航【英文标题】:Programmatic Paginated Navigation in Swift / UI Builder 【发布时间】:2016-06-11 11:28:20 【问题描述】:

我是一名高级 Ruby 开发人员,刚刚进入 Swift 和 iPhone 开发,但似乎无法从回答我自己的问题开始。如果我听起来很新,我提前道歉!

我的目标是获取一组数据(在 Ruby 中,它将是一个散列或 JSON),并从中形成 x 视图。例如,数据可能是:

my_page_info = 

  title: "Page 1",
  content: "Blah blah blah",
  additional_info: "Some more blah"
,

  title: "Page 2",
  content: "Blah blah blah",
  additional_info: "Some more blah"
,

  title: "Page 3",
  content: "Blah blah blah",
  additional_info: "Some more blah"
  

附带问题.. 用 Swift 编写此类信息的最佳方式是什么?假设它不在 JSON 中..

然后我假设,在 UI Builder 中仅使用一个视图来表示该数组中的所有可用数据是合适的架构。其中my_page_info 将填充定义为@IBOutlet 的3 个不同标签,这些标签排列在我的UI 视图控制器中,然后插入这些值。

最后,我想要一个后退和前进按钮,让我可以浏览这些项目。我到处都在寻找这样的系统图标,但它似乎不存在。至少不在 UI Builder 中。我想它只能以编程方式完成,然后我必须导入自己的图像来表示这些按钮。

有人知道我的问题的任何部分,或指导我正确的方向吗?

谢谢!

【问题讨论】:

【参考方案1】:

从 Airspeed Velocity 对我的 question 的回答中,您可以看到结构将是获取数据的方式:

struct Page 
    let title: String
    let content: String
    let additionalInfo: String


var myPageInfo = [
    Page(title: "Page 1", content: "Blah blah blah", additionalInfo: "some more blah"),
    Page(title: "Page 2", content: "Blah blah blah", additionalInfo: "some more blah"),
    Page(title: "Page 3", content: "Blah blah blah", additionalInfo: "some more blah"),
]

注意变量名中下划线的删除。

然后,我想你会想要一个 tableview,在 Interface Builder 中设置一个原型单元格,其中包含数据中每个对应字段的字段。

编辑:您可能只需要单元格中的标题,然后将其他信息通过 segue(见下文)传递到所有内容都布置得很好的页面。

那么您的 cellForRowAtIndexPath 方法将如下所示:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCellWithIdentifier("pageCell", forIndexPath: indexPath) as! PageCell

    cell.titleLabel.text = "myPageInfo[indexPath.row].title"
    cell.contentLabel.text = "myPageInfo[indexPath.row].content"
    cell.additionalInfoLabel.text = "myPageInfo[indexPath.row].additionalInfo"

    return cell

tableViewController 中的 prepareForSegue 方法会将所选数据的值传递给您设置的 ViewController 以显示信息。

我不确定您在最后一部分中要查找的内容,但如果您使用导航控制器,您会自动获得一个后退按钮(在您的情况下会返回到 tableViewController)

【讨论】:

非常感谢@Shades。这回答了我的很多问题。还没有看到后退按钮,但是当我编写所​​有这些代码时它可能会自动弹出.. 将您的 tablewViewController 嵌入到 navigationController 中并观看魔术

以上是关于Swift / UI Builder 中的程序化分页导航的主要内容,如果未能解决你的问题,请参考以下文章

Interface Builder 文件 Swift/Parse 错误中的未知类 PFQueryTableView

停止 C++Builder XE 删除/编辑 .dfm 文件中的 UI 组件

loadNibNamed() 失败:Interface Builder 文件中的未知类 <mangled Swift identifier>

iOS/Swift 中的 UI 测试

如何使用 Interface Builder 和 Swift 在 xCode6 中正确创建故事板

如何在 Swift 中的 UI 标签栏上应用渐变?