【问题标题】:Swift XCode - Changes in storyboard aren't being reflected in the iPhone simulatorSwift XCode - 故事板中的更改没有反映在 iPhone 模拟器中
【发布时间】:2015-10-26 04:48:57
【问题描述】:

我正在尝试制作一个简单的 UITableView,在每个单元格的右侧附加一个按钮。我将按钮添加到情节提要中的原型单元格并设置约束,以便 AutoLayout 接管并将其放置在正确的位置。当我在助理编辑器中预览布局时,一切看起来都很棒。但是,一旦我启动模拟器并转到该视图,按钮就不再存在(单元格为空白)。

我在尝试添加披露指示器时遇到了类似的问题,但它没有显示 - 要修复它,我必须以编程方式添加该附件。故事板的目的不是在不使用代码的情况下帮助进行更改吗?我对此还是很陌生,希望得到一些指导。

编辑:请求的一些代码(对不起):

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = UITableViewCell()

    let addButton = UIButton()

    let menuItem = currentOrder?.getSortedMenuItems()[indexPath.row]
    let itemPrice = "\(currentOrder!.menu[menuItem!]!)"

    cell.textLabel!.text = menuItem! + " - " + itemPrice
    return cell
}

其中的大部分代码都非常不相关,但正如您所见,我尝试添加一个按钮然后停止,因为我不确定从那里去哪里。我的印象是所有这些都可以使用故事板来完成。

【问题讨论】:

  • 附加您在 cellForRowAtIndexPath 函数中的代码
  • @AndriyGordiychuk 完成
  • 问题就在那里。给我5分钟

标签: ios swift xcode uitableview button


【解决方案1】:

您遇到的问题是您没有使用您在情节提要中创建的单元格。当你打电话时

let cell = UITableViewCell()

它创建一个具有默认样式的单元格。您想要做的是使用您在情节提要中创建的单元格。

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

// setup your cells (e.g. update its title)

return cell

}

您应该将“cellWithSwitch”更改为您在情节提要中为单元格设置的标识符。

您可以通过在情节提要中选择单元格,然后在属性检查器中检查信息来找到单元格的标识符:

如果您尚未设置此标识符 - 设置它然后使用它。然后您在情节提要中所做的更改将反映在手机上;)

额外

通常需要对单元进行子类化以使其更易于使用。这是一个例子:

class MyCell:UITableViewCell {

    @IBOutlet var myButton: UIButton!

}

现在,你必须做另外 3 件事:

1) 在情节提要中选择您的单元格并在身份检查器中将其类设置为MyCell(这是我发布的图像中的第三个选项卡)

2) 打开连接检查器(最后一个选项卡)并连接myButton 插座

3) 修改你的cellForRowAtIndexPathFunction:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cellWithSwitch") as! MyCell

// setup your cells (e.g. update its title)

// you can now access your button as cell.myButton

return cell
}

【讨论】:

  • 这可能是一个愚蠢的问题,但我如何才能在代码中访问该按钮?有没有办法通过命名来获取单元格中的 UI 元素,类似于您获取单元格的方法?
  • 给我 10 分钟,我将更新我的答案,以展示如何使用自定义类使单元格出列;)
  • 查看末尾标题为 Extra 的位
猜你喜欢
  • 1970-01-01
  • 2017-12-13
  • 2018-09-20
  • 2016-04-24
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 1970-01-01
  • 2013-01-16
相关资源
最近更新 更多