UserDefault 保存按钮状态

2023-12-05

即使我退出 view \ App ,我也试图通过保存它的状态来完成我最喜欢的按钮。如果有人能告诉我我该怎么做,那就太好了 我正在使用 Xcode 8 并使用 Swift 3 进行编码。

  //create a new button
    let Favoritebutton: UIButton = UIButton(type: UIButtonType.custom)
    //set image for button
    Favoritebutton.setImage(UIImage(named: "EmptyHeart.png"), for: .normal)
    Favoritebutton.setImage(UIImage(named: "FilledHeart.png"), for: .selected)
    //add function for button
    Favoritebutton.addTarget(self, action: #selector(self.button), for: .touchUpInside)
    //set frame
    Favoritebutton.frame = CGRect(x:0,y: 0,width: 35,height: 35)

    Favoritebutton.isSelected = UserDefaults.standard.bool(forKey: "isSaved")

    let barButton = UIBarButtonItem(customView: Favoritebutton)
    //assign button to navigationbar

    self.navigationItem.rightBarButtonItem = barButton

    let state = UserDefaults.standard.bool(forKey: "isSaved") ?? false

    }


@IBAction func button(sender: UIButton) {

    sender.isSelected = !sender.isSelected
    if let Favoritebutton = sender as? UIButton {
        Favoritebutton.isSelected = UserDefaults.standard.bool(forKey: "isSaved")
        if Favoritebutton.isSelected {
            // set selected
            Favoritebutton.isSelected = true



    // set badge Value to tabbar item.
    let tabItem = self.tabBarController?.tabBar.items![3]
    sel_val = tabItem?.badgeValue
    if(sel_val == nil){
        sel_val = "0"
    }
    let sel_num  = Int(sel_val!)
    tabItem!.badgeValue = String(format: "%d", sel_num! + 1) as String
    //Add Favorite
    let Fav: NSMutableArray = []
    Fav.add(barImage)
    Fav.add(barName)
    Fav.add(streetName)
    favorite.add(Fav)




        } else {
            // set deselected
            Favoritebutton.isSelected = false
            //Badge Value Count.
            let tabItem = self.tabBarController?.tabBar.items![3]
            sel_val = tabItem?.badgeValue
            if(sel_val == nil){
                sel_val = "0"
            }
            let sel_num  = Int(sel_val!)
            tabItem!.badgeValue = String(format: "%d", sel_num! - 1) as String
            //Remove Favorite
            let Fav: NSMutableArray = []
            Fav.add(barImage)
            Fav.add(barName)
            Fav.add(streetName)
            favorite.remove(Fav)


        }
    }

您可以减少代码button to

@IBAction func button(sender: UIButton) {

    sender.isSelected = !sender.isSelected
    UserDefaults.standard.set(sender.isSelected, forKey: "isSaved")
}

要设置状态,您必须将其读回

let Favoritebutton = UIButton(type: UIButtonType.custom)
//set image for button
Favoritebutton.setImage(UIImage(named: "EmptyHeart.png"), for: .normal)
Favoritebutton.setImage(UIImage(named: "FilledHeart.png"), for: .selected)
Favoritebutton.isSelected = UserDefaults.standard.bool(forKey: "isSaved")
...

Edit:

我不知道你的代码是做什么的,但有很多冗余代码。这IBAction可以简化为(当然未经测试)

@IBAction func button(sender: UIButton) {

    let newValue = !sender.isSelected
    sender.isSelected = newValue
    UserDefaults.standard.set(newValue, forKey: "isSaved")

    let tabItem = self.tabBarController?.tabBar.items![3]
    sel_val = tabItem?.badgeValue
    if(sel_val == nil){
        sel_val = "0"
    }
    let sel_num  = Int(sel_val!)

    let fav: NSMutableArray = []
    fav.add(barImage)
    fav.add(barName)
    fav.add(streetName)
    if sender.isSelected {
        tabItem!.badgeValue = String(format: "%d", sel_num! + 1)
        favorite.add(fav)
    } else {
        tabItem!.badgeValue = String(format: "%d", sel_num! - 1)
        favorite.remove(fav)
    }
}

并请以小写字母开头命名变量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UserDefault 保存按钮状态 的相关文章

  • Swift 中的 preg_match 等效项

    我尝试将 PHP 函数转换为 Swift 该函数用于根据 my 正则表达式将字符串格式化为另一个字符串 这就是我在 PHP 中所做的 preg match P 0 9 Y 0 9 M 0 9 D T 0 9 H 0 9 M 0 9 0 9
  • 应用程序终止和设备重启后 PushKit 通知未到达

    借助 PushKit 我的 iOS 应用程序即使已关闭也能成功接收 VoIP 推送通知 失败时只有一个条件 如果我通过标准任务切换器刷出 终止 我的应用程序并重新启动我的设备 起初 我在重新启动设备后就遇到了这个问题 如这个问题所述 排除启
  • 在 iOS 上使用 MDCBottomNavigationBar 切换视图控制器

    我正在尝试创建一个使用 Material Design 库的底部导航功能的 iOS 应用程序 我可以获得带有底部导航栏的视图控制器来编译和显示 但我无法添加其他视图控制器并在单击不同选项卡时在它们之间切换 我将所有内容简化为两个文件 一个是
  • 两个滚动视图同时工作,一键触摸

    我正在其中开发应用程序 我必须一键同时处理两个滚动视图 这意味着如果我同时滚动一个滚动视图 另一个滚动视图必须随之滚动 如果这是可能的 那么如何才能做到呢 在包含两个滚动视图的视图控制器中实现 UIScrollViewDelegate 协议
  • 通过 IOS Google Drive SDK 列出 Google Drive 的所有文件夹

    实际上我将 google drive sdk 与我的 ios 应用程序集成了 我可以通过适用于 iOS 的 google drive sdk 在 Google Drive 上上传指定文件 此外 我想提供一个功能 用于从可用文件夹中选择一个文
  • 以编程方式在网站上输入字符串

    我想知道如何或是否可以通过 iPhone 应用程序代码在网站的文本字段中输入内容 所以我想去一个网站 中间有一个文本字段 我想在那里输入一个特定的字符串 我怎样才能在 Swift 中做到这一点 或 Objective C 然后我会弄清楚它在
  • 如何检查 iOS/iPadOS 是否启用了深色模式?

    从 iOS iPadOS 13 开始 提供深色用户界面风格 类似于 macOS Mojave 中引入的深色模式 如何检查用户是否启用了系统范围的深色模式 For iOS 13 您可以使用此属性来检查当前样式是否为深色模式 if availa
  • Facebook 登录 - 如果存在用户帐户(并且未安装应用程序)登录失败

    我刚刚在测试我的应用程序时发现了这个问题 它真的开始让我烦恼 那么环境是这样的 没有安装 Facebook 应用程序 用户登录 iOS 系统帐户 在设置 gt Facebook 下 当我的应用程序第一次尝试对用户进行身份验证时 它会提供这面
  • 如何在 iOS 中将 URL 添加到 Safari 的阅读列表?

    在我的 UIWebView 中 我想添加一个选项来将当前页面添加到 Safari 的阅读列表中 我知道这个功能的存在 因为 GMail 在长按链接时提供了它 但我找不到任何有关要使用的 URL 方案的信息 可能重复 如何从 iOS 以编程方
  • 从 firebase swift 读取数据

    我正在尝试从 firebase 数据库检索数据 但是当我运行代码时 它没有显示任何内容 但没有显示错误 我从Firebase手册中得到了这段代码 顺便说一句 我很确定路径是正确的 let ref FIRDatabase database r
  • iOS 应用程序中的屏幕共享? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想与运行相同应用程序的其他设备共享
  • UIKeyboardFrameBeginUserInfoKey 和 UIKeyboardFrameEndUserInfoKey

    在管理键盘中文档 http developer apple com iphone library documentation StringsTextFonts Conceptual TextAndWebiPhoneOS KeyboardMa
  • iOS Javascript DOM“冻结?”

    这里有几个问题 有没有办法阻止 iOS 在滚动时冻结页面上的 javascript 当您在另一个选项卡中或切换应用程序时 iOS 是否会冻结 JavaScript iOS 上还有其他主要的 javascript 限制吗 iOS 6 x 会暂
  • 应用内购买自定义价格

    我已经搜索了一段时间 但它可能太明显了 人们不会发布它 我想知道是否可以为产品设定动态价格 我有送货申请 价格可能会因距离而异 此外 它也可以是非整数价格 例如 2 43 美元 是否可以 另外 我无法在 iTunes Connect 上设定
  • 如何以编程方式添加 NSMenu?

    我没有使用storyboard和xib 只使用了代码 我想以编程方式添加 编辑 菜单 我的问题是 1 如何显示 编辑 菜单 评论问题1 需要输入什么代码 2 Swift 提供了复制和粘贴等操作吗 class TestManager NSOb
  • 从 UITableViewCell 隐藏删除按钮

    当我的表视图处于编辑模式时 会出现红色 按钮 当用户点击其中之一时 会出现 删除 按钮 当用户点击 删除 时 我首先检查一些内容 部分在线 可能不允许此删除 当不允许删除该单元格时 如何以动画方式隐藏 删除 按钮并让红色 按钮再次变成 所以
  • CIImage内存未释放

    我正在尝试拍摄一系列图像 混合当时的 X 图像并生成新图像 这是我必须完成此任务的代码 static func blendImages blendFrames Int blendMode CIImage BlendMode imagePat
  • 以模态方式呈现 UIImagePickerController 时出错

    我有一个奇怪的问题UIImagePickerController在我的 iOS 6 应用程序中以模态方式显示 这XCode给我这个错误 Warning Attempt to present
  • 在 UIAlertController 的文本字段中选择文本

    我需要在 UIAlertController 出现后立即选择文本字段的文本 但是 我在标准 UITextField 中选择文本的方式在这里不起作用 这就是我尝试过的 但我似乎无法让它发挥作用 let ac UIAlertController
  • WebCore::UserGestureIndicator::processingUserGesture 中的 EXC_BAD_ACCESS (SIGSEGV)

    我有一个使用 UIWebView 和 HTML5 websockets 构建的 iOS 应用程序 该应用程序经历了看似随机的崩溃 它发生在用户与其交互时以及在用户和应用程序之间没有发生交互的寿命测试期间 崩溃日志都有以下内容 Excepti

随机推荐

  • 将 Firestore 依赖项和类型导入到 node.js

    在今年的 FirebaseSummit 演讲之后 我最近将我的云函数更新为 TypeScript 我的所有代码看起来都很酷 但我在尝试恢复 Firestore API 的类型时遇到一些问题 例如QuerySnapshot DocumentR
  • CSS 加载时背​​景颜色过渡/滑过

    我发现一个 CSS 过渡在悬停时效果很好 它会将我的背景颜色滑过 但仅限于悬停时 CSS 有没有办法让这种情况在加载而不是悬停时发生 color FF0000 display inline block background color ff
  • 获取对象数组中相同值的计数

    假设我有一个对象数组 const apple bookName Harry Pottar part 1 bookName Harry Pottar part 2 bookName LOTR part 1 bookName LOTR part
  • Google Apps 脚本 e.namedValues 格式多项选择

    我有一个简单的脚本 用于通过电子邮件发送 Google 云端硬盘表单提交的结果 表格中的问题之一有多项选择复选框 我正在使用 e namedValues 来获取答案数组 以便我可以通过电子邮件发送给他们 如下所示 var multiple
  • 如何使用 Objective-C 在音频文件上添加回声效果

    我正在开发一个应用程序 我想在其中使用 Objective c 在录制的音频文件中添加回声效果 我正在使用 DIRAC 添加其他效果 例如男人对女人 慢 快 现在我必须用录制的声音制作机器人声音 对于机器人语音我需要添加回声效果 请帮我做到
  • 悬停时切换 div

    我有一个测试 UL 列表 如下所示 ul li First div li li Second div li li Third div li ul 并且 下面我有相关的 div 又名 div Content Here div div Cont
  • 在 Linux 上的 QFileDialog 中过滤可执行文件

    我正在尝试制作一个文件选择器来选择一个程序 可执行文件 我对 QDir 和 QFileDialog 文档的理解是 以下内容应该显示一个仅包含可执行文件的文件对话框 但是 即使目录中有可执行文件 它也根本不显示任何文件 也没有目录 self
  • 取消 Swift 中的定时事件?

    我想在事件发生后 10 秒内运行一段代码 但我希望能够取消它 这样如果在这 10 秒之前发生某些事情 代码将不会在 10 秒过去后运行 我一直在使用这个 但它是不可取消的 static func delay delay Double clo
  • 在 javascript es6 中编写全局 const 的正确方法是什么?

    在 javascript es6 的脚本中编写全局 const 并在其他脚本中使用它的正确方法是什么 你只需使用const在全球范围内 const aGlobalConstant 42 这就创建了一个全局常数 它不是全局对象的属性 因为co
  • 无法在Mac上使用PIL打开图像

    所以我有一个简短的 python 脚本 它接受表示图像的 base64 字符串 然后打开该图像的预览 这是我的脚本 usr local bin python3 from PIL import Image import sys import
  • ASP.NET:URI 处理

    我正在写一个方法 比方说 给定1 and hello应该返回http something com something 1 hello en I could将它们组合在一起非常容易 但是 ASP NET 3 5 为构建 URI 提供了哪些抽象
  • 如何获取两个日期之间的数据 REST Spring

    我的控制器映射 GetMapping fetch one date two date public List
  • 在没有管理员权限的情况下让 Sql Developer 在 Windows 上使用即时客户端?

    我已经在Win10 64位的企业PC上安装了Sqldeveloper版本19 1 64位版本 它可以与嵌入式 jdbc client 配合使用 但我需要使用 Oracle OCI client 使其正常工作 原因之一是更好地支持取消长时间运
  • 某些设备不支持SipApi

    我正在使用本机 sip api 在 android 应用程序中实现 sip 呼叫 它工作正常 但在某些设备 如 CANVAS 3 中它无法工作 调试后我发现这行代码正在返回NULL manager SipManager newInstanc
  • 为什么 TypeScript 不在回调中强制使用泛型参数?

    考虑这个使用 2 6 1 编译的 TypeScript 代码 function foo
  • 在管理新订单电子邮件模板中添加应用的优惠券代码 - WooCommerce

    让我澄清我的问题 我已下载并激活用于电子商务功能的 WooCommerce 插件 我想使用我的自定义插件在管理新订单电子邮件模板中添加 应用优惠券代码 Now 您能告诉我实际设置新订单电子邮件模板以便我覆盖它的确切钩子或函数吗 你能告诉我如
  • 使用 xml.etree.ElementTree 在 Python 中简单遍历 dom

    例如 考虑解析一个pom xml file
  • 锁屏时如何显示Activity?

    我的应用程序在汽车对接事件中启动 我想在插入设备时唤醒手机 由系统完成 并解锁屏幕 是否可以 我用于将活动提升到最高水平 private Window wind Override protected void onResume TODO A
  • C99 和 C++ 内联函数的兼容定义

    我有一个 C 11 应用程序代码使用的 C99 代码实用程序库 一些内联函数以 C99 风格声明 并在翻译单元中显式生成代码 例如 buffer h inline bool has remaining void obj buffer c e
  • UserDefault 保存按钮状态

    即使我退出 view App 我也试图通过保存它的状态来完成我最喜欢的按钮 如果有人能告诉我我该怎么做 那就太好了 我正在使用 Xcode 8 并使用 Swift 3 进行编码 create a new button let Favorit