- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
每当您点击特定的 TableViewCell 以在另一个 ViewController 中执行该通知时,我都实现了一个 NotificationCenter,对于此示例,另一个 ViewController 背景颜色变成粉红色,效果很好,但我的问题是如何使用 UserDefaults 保存粉红色在 ViewController 内部的状态?
为了更好地阐明这一点:
ViewController #2 包含按下时执行操作的 TableViewCell
ViewController #1 是颜色变为粉色的 View 。
我想要实现什么?
使用 UserDefaults 在 ViewController #1 中保存粉红色的状态
ViewController #1 代码
- viewDidLoad
override func viewDidLoad()
{
NotificationCenter.default.addObserver(self, selector: #selector(BrandTableViewController.testNotifcation(notification:)), name:NSNotification.Name(rawValue: "refresh"), object: nil);
}
- 测试通知函数
@objc func testNotifcation(notification: NSNotification) {
table.backgroundColor = UIColor.systemPink
print("This is a message to say it is working")
}
ViewController #2 代码
didSelectRowAt
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.row == 0
{
if traitCollection.userInterfaceStyle == .light
{
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "refresh"), object: nil, userInfo: nil)
self.dismiss(animated: true, completion: nil)
}
else if traitCollection.userInterfaceStyle == .dark
{
...
}
}
}
最佳答案
您可以在调用通知方法时在 UserDefaults
中设置颜色。因此,在 ViewController1 中更新您的代码:
@objc func testNotifcation(notification: NSNotification) {
table.backgroundColor = UIColor.systemPink
let colorData = NSKeyedArchiver.archivedData(withRootObject: UIColor.systemPink)
UserDefaults.standard.set(colorData, forKey: "savedColor")
UserDefaults.standard.synchronize()
print("This is a message to say it is working")
}
然后,在加载 View 时,您需要添加代码来获取保存的颜色并将其设置为背景。因此,更新 ViewController1 中的 viewDidLoad
中的代码。
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(BrandTableViewController.testNotifcation(notification:)), name:NSNotification.Name(rawValue: "refresh"), object: nil);
if let colorData = UserDefaults.standard.value(forKey: "savedColor") as? Data,
let savedColor = NSKeyedUnarchiver.unarchiveObject(with: colorData) as? UIColor
{
table.backgroundColor = savedColor
}
}
希望对您有所帮助。
关于ios - Swift - 将 UserDefaults 添加到 NotificationCenter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59332918/
所以我正在创建一个附加对象的数组。我的问题是我想添加对象而不删除原始对象。一旦我附加了对象,我就会看到它们。但是当我添加新对象时,旧对象消失了,并被旧对象取代。如何通过 NSUserDefaults
Swift 3.0 中 UserDefaults() 和 UserDefaults.standard 有区别吗? 最佳答案 UserDefaults - 为您提供一个新对象,每个对象都分配不同的内存并
当我打印 .text 属性 print(inputField.text!) 时,它会打印 0.0925,这就是我输入的内容。但是当我将其传递给 UserDefault 或变量时, defaults.s
我创建了一个虚拟 IOS 应用程序来很好地解释我的问题。让我分享所有细节: 这个虚拟 IOS 应用程序中有 2 个页面:LoginPageViewController.swift 和 Homepage
我的对象符合新的 Swift 4 Codeable协议(protocol)。如何在 UserDefaults 中保存这些对象的数组? struct MyObject: Codeable { v
是什么导致这种情况发生?此错误的两个实例出现在我的 View Controller 的最底部,其中行以“userDefaults”开头。这是我的代码 import UIKit class Second
我正在呈现一个带有一些文本字段和按钮的 View ,用户可以在该文本字段中输入一些数据,当用户单击保存按钮时,该数据将保存在 NSUserdefaults 中并显示在另一个 View 上,但它不起作用
将复杂数据存储到 UserDefaults 时,出现异常。代码如下。 写入变量c时发生异常。 struct MyData : Codable { var v1 : Int var v2 : I
我有一个 UIProgress View ,需要 60 秒才能穿过屏幕,但是我如何使它的位置而不是设置时间“var秒= 60”,我有 UserDefault 字符串作为时间? (并未包含所有代码。)
我有应用程序+扩展,并且我制作了这样的共享存储 extension UserDefaults { static let suiteName = "group.myApp" static
我试图将自定义类数组保存到 UserDefaults,但它不起作用。我在 if let 上没有得到任何返回。我在网上到处找。我使用的是 Swift 4.2 extension UserDefaults
我的要求是用户必须导航上次访问的页面,因此 我试图将UIViewController数组保存到NSUserDefault,但应用程序每次都会崩溃 let array = self.navigation
我正在我的应用中实现备份功能。因此,我正在备份所有 UserDefaults 都保存在以下路径的 UserDefaults 源文件: .../Library/Preferences/.plist 当用
我希望将精心制作的多级自定义对象保存到 NSUserDefaults 中。我的自定义类设置如下: 讲师 @property (strong, nonatomic) NSString *instruct
我正在手动将数据输入结构。但是该结构不保存数据。我尝试使用 userdefaults 但它不起作用。如果数据位于结构 bad 中,我希望数据始终显示在标签 benCarson 上。 View Cont
我想我正在尝试制作的 iOS 应用程序的某些部分存在概念问题。基本上,在此应用程序中,您将一个项目添加到列表中,该项目将在 1 小时后过期。所以你有一个小时的时间来使用它。但是,我希望在应用程序崩溃或
因此,当用户首次打开我的应用程序时,他们将看到一个带有按钮的 View ,用于继续登录或注册。在我的登录 View 中,我有一个按钮处理程序(通过操作附加),当用户按下登录按钮时调用它。尽管我使用 U
将计数用户默认值重置为来自扩展方法之外的函数。在这种情况下,它的功能很简单。现在代码从 0 开始,除非我可以使用 func 来阻止代码上升。 extension UIViewController {
我目前遇到的一个问题是,如果我离开应用程序并返回,recordData 值不会保持保存状态。如果我在不关闭应用程序的情况下再次玩游戏,它仍会保存。 如果我关闭并重新打开应用程序,ant new sco
在 Swift 中创建了一个像这样的 Array var MyArray: [String:[String:[Int]]] = [ "xx": ["x1": [1, 2, 3], "x2":
我是一名优秀的程序员,十分优秀!