ios - 具有多个部分的 TableView 的 Swift NSUserDefault?

标签 ios swift uitableview nsuserdefaults

我目前正在做一个 Xcode 项目 (SWIFT),我有一些与 NSUserdefault 和 prepareforsegue 相关的问题。

我有 2 个 TableView。 TableView1 有 2 个部分:section1 和 section2。这是我想要的:

  • 当我在 TableView1 的 section1 中单击随机行时,TableView2 会显示我想要的部分数。 (例如:我点击第 1 行然后 TableView2 显示 3 个部分,我点击第 2 行然后 TableView2 显示 4 个部分,当我点击不同的行时 TableView2 中显示的部分数量必须不同)

  • 同上 TableView1 中的 section2

    我使用由 2 个数组组成的数组在 TableView1 中显示 2 个部分。

如果这个问题很愚蠢,我很抱歉,我是编程新手,所以我希望你们能告诉我如何做这个项目。我很感激:)

最佳答案

背景

为了使这个答案更清楚,我假设您有两个 View Controller ,Table1ViewControllerTable2ViewController,它们显示 Table1表 2。我假设您知道如何在 Interface Builder 中连接两个 View Controller ,以便您可以单击 Table1 并显示 Table2ViewController。正如您在问题中所描述的,当用户单击 Table1 中的一行时,该行决定了 Table2 中应该有多少个部分。我不会讨论与将 Table1 的行映射到 Table2 的节数相关的任何内容。

主要问题是如何将选定数量的部分发送到 Table2ViewController

正如您在问题中提到的那样,您可以使用 NSUserDefaults 来传达信息,但这不是用户默认值的用途。 NSUserDefaults 的文档说默认系统允许应用程序自定义其行为以匹配用户的偏好。并给出了以下示例:允许用户确定什么单位您的应用程序显示的测量值或文档自动保存的频率。您正在设计您的应用程序以根据先前的用户选择运行。

所以如果我们不打算使用 NSUserDefaults,我们应该怎么做呢?您还提到了 UIViewController 方法 prepareForSeque:sender:。它的文档是这样写的:[s]子类覆盖这个方法并在它被显示之前用它来配置新的 View Controller

主要方法

而这正是我们想要做的。在显示 Table2ViewController 之前,我们要为它配置 Table2 应具有的部分数。因此,让我们向 Table2ViewController 添加一个属性,如下所示(注意以下任何有“...”的地方,我省略了一些代码):

class Table2ViewController: ... {
   var numberOfSections = 0

   func numberOfSectionsInTableView(tableView: UITableView) -> Int
   {
       return numberOfSections
   }

...
...
...

}

现在剩下要做的就是在用户点击 Table1 中的一行后,我们确定 Table2 应该有多少个部分(我保留该部分未指定),然后在显示 Table2ViewController 之前,我们需要配置 numberOfSections。我们在 prepareForSegue 调用中这样做。像下面这样的东西应该可以工作:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
  if let selectedIndexPath = tableView.indexPathForSelectedRow() {
    var destinationVC = segue.destinationViewController as! Table2ViewController
    destinationVC.nummberOfSections = self.numberOfSectionsFor(selectedIndexPath)
  }
}

所以我们首先确定了所选行的索引路径。然后我们将 segue.destinationViewController 转换为 Table2ViewController 以便我们可以访问它的属性。最后,我们使用 Table1ViewController 上的一些方法设置它的 numberOfSections 属性。

关于ios - 具有多个部分的 TableView 的 Swift NSUserDefault?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31589472/

相关文章:

ios - 魔术记录,从UITableView中删除“第0节中的行数无效……”

iphone - UIButton 标题标签不显示

ios - NSKeyedArchiver 并在目标之间共享自定义类

swift - 如果我在 Swift 中得到一个 UnsafeMutablePointer,我应该免费打电话吗?

ios - SwiftUI - 动画计数文本从 0 到 x

ios - 具有不同功能的独特 UITableViewCell

ios - UITableViewCell 内 UITableView 的自动布局设置

ios - didDeSelectRowAtIndexPath 没有在 objective-c 中被调用

ios - 没有这样的模块 'MaterialComponents.MaterialCards_ColorThemer'

swift - 为什么我的最后一个单元格失去了背景颜色和内容