- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我目前正在做一个 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 ,Table1ViewController
和 Table2ViewController
,它们显示 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/
我对 NSUserDefaults 的 standardUserDefaults 有疑问。standardUserDefaults 方法到底做了什么?是在初始化对象吗? 最佳答案 是或否。 NSUse
我的应用程序涉及用户能够拖动特定项目,例如音量 slider 和 UIImage View 。我的目标是能够保存项目的位置,以便用户在重新启动后不必再次拖动项目。不幸的是,我在使用“保存 CGRect
有谁知道通过 NSLog 转储 NSUserDefaults 的 standardUserDefaults 的快速方法?这是我的: NSLog(@"NSUserDefaults dump: %@",
我的主菜单 (MainMenu.xib) 中有一个名为“Word Wrap”的 NSMenuItem。它的值绑定(bind)到我的共享用户默认 Controller ,也在 XIB 中实例化。选中时它
App Programming Guide for tvOS简要说明: Apple TV上没有用于应用程序的持久本地存储。这意味着为新的Apple TV开发的每个应用程序都必须能够在iCloud中存储
苹果的文档说 NSUserDefaults temporarily disables sudden termination to prevent process killing between the
我使用 NSUserDefaults 来存储一些东西。 它工作正常,但只有在我重新启动应用程序后。 我使用:[首选项同步];我以为它会立即保存数据,但首选项保持为空。 如果您有任何想法或已经处理过它,
在有人说这个问题之前已经被问过很多次之前,我已经浏览了大约 20 个不同的答案,并尝试了我发现的所有内容。尽管如此,我大约 5 天前才开始使用 Objective C,所以可能有一些非常简单的解决方案
我试图在应用程序第一次启动时显示警报。如果他们稍后进入设置页面并希望再次看到它,我还想显示此警报。我想我可以在 NSUserDefaults 中设置一个 bool 值。我不太确定如何做到这一点(假设这
在我的 viewWillLoad: 方法中,我目前正在执行以下操作: - (void)viewWillAppear:(BOOL)animated { NSUserDefaults *defaul
我将一个整数值传递给 NSUserDefault 对象来存储,以便在我的应用程序加载时使用。我HAD它工作得很好,直到我尝试将该整数值切换为 float 。它导致了一大堆问题,所以我重新调整了我的方法
我在 Settings.bundle 中保存了一些设置,并且尝试在 application:didFinishLaunchingWithOptions 中使用它们,但在模拟器上首次运行时,通过按键访问
数组如何保存到 NSUserDefaults 中? 我有以下代码尝试存储 NSURL 数组 NSArray *temp = [[NSArray alloc] initWithArray:[mySing
NSUserDefaults 的同步方法何时以及为何失败?确保我的值实际写入并提交给 NSUserDefaults 的最佳方法是什么,这样我在应用程序重新启动后恢复状态就不会遇到任何问题? 最佳答案
我对 NSUserDefaults 有疑问,并且不太明白发生了什么。 我的应用程序有 5 个级别,每个级别都与 NSUserDefaults 执行完全相同的操作(检索级别默认值,在用户玩该级别时更改值
我能够使用 NSUserDefaults 存储、检索和删除值。我无法成功找到 NSUserDefaults 在 iPhone 上的物理存储位置?我猜它应该是 plist 文件,但不确定。有谁知道是否可
谁能告诉我 NSUserDefaults 的最大大小。意味着我们可以存储在用户默认值中的对象或基元。例如 10 MB 等。 谢谢 最佳答案 不,除了设备本身的存储容量之外,NSUserDefaults
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: How can I reset the NSUserDefaults data in the iPhone simu
每次向 plist 写入任何内容时,我都会使用 [[NSUserDefaults standardUserDefaults] Synchronize] 。这太过分了吗?或者这样做会产生不良影响吗? 最
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:@"xxxxxxxx" fo
我是一名优秀的程序员,十分优秀!