• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 快速更改图像不起作用

[复制链接]
菜鸟教程小白 发表于 2022-12-11 18:18:07 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

编辑:将图像更改为标签并将字符串“>”转换 90 度后,它仍然无法正常工作。我打印出度数的值,它按预期工作,但没有发生转换。

我的 iOS 应用程序有一个完全奇怪的行为。我有一个带有部分标题的表格 View 。这些部分的标题是典型的下拉图像。一个向下箭头和一个向上箭头图像。当我点击标题部分时,单元格会动态显示或隐藏。现在我也想根据那个来改变图像。

这是当我点击部分标题时运行的代码:

func selectedSection(sender: UIButton) {
    let previousSelected = self.selectedSection
    self.selectedSection = sender.tag

    if previousSelected != self.selectedSection {
        // one section opens another gets closed
        // workaround so the animation does not look awful for section headers
        print("revious: \(previousSelected)")
        sectionHeaders[previousSelected].toggleIcon()
        print("Selected: \(self.selectedSection)")
        sectionHeaders[self.selectedSection].toggleIcon()
        print("***********")

        var indexPathToInsert = [IndexPath]()
        var indexPathToDelete = [IndexPath]()

        for i in 0..<self.menuItems[self.selectedSection].getSubItems().count {
            indexPathToInsert.append(IndexPath(row: i, section: self.selectedSection))
        }

        for i in 0..<self.menuItems[previousSelected].getSubItems().count {
            indexPathToDelete.append(IndexPath(row: i, section: previousSelected))
        }


        tableView.beginUpdates()
        tableView.deleteRows(at: indexPathToDelete, with: .none)
        tableView.insertRows(at: indexPathToInsert, with: .automatic)
        tableView.endUpdates()
    } else {
        // close the section so the selected section is 0 again
        self.selectedSection = 0

        print("revious: \(previousSelected)")
        sectionHeaders[previousSelected].toggleIcon()
        print("***********")
        tableView.reloadSections([previousSelected], with: .none)
    }
}

切换图标如下所示:

func toggleIcon() {
    isOpen = !isOpen
    print("\(isOpen)")

    if isOpen {
        print("Works")
        self.sectionIcon.image = UIImage(named: "arrow-up")
    } else {
        print("Does not work")
        self.sectionIcon.image = UIImage(named: "arrow-down")
    }
}

当我运行它并单击不同的标题时,一切都按预期工作。但是一旦我关闭一个部分而不打开另一个部分,这个部分就被打破了。该代码仍然有效,但不会更改图像。打印出来:

'Selected: 1'
true
Works

当我使用断点时,会调用代码,它将图标设置为向上箭头。但是,它不会改变图像。

我真的不明白发生了什么。是不是不能多次更换图片?

感谢您的帮助!



Best Answer-推荐答案


我不确定这是否是导致问题的原因,但请记住,所有 UI 更改都在主线程上。

在 Swift 3 上,

尝试使用类似

的方式包装您的调用以更新图像
DispatchQueue.main.async { }

祝你好运

关于ios - 快速更改图像不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41047975/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap