Swift - 如何使用 becomeFirstResponder 跳转到顶部
Posted
技术标签:
【中文标题】Swift - 如何使用 becomeFirstResponder 跳转到顶部【英文标题】:Swift - How to jump to the top using becomeFirstResponder 【发布时间】:2019-11-04 07:58:26 【问题描述】:这就是我想要做的,当我点击我的button
时,我想跳到顶部,但是当我点击button
时,我的应用程序崩溃了。
@IBAction func addToCart(_ sender: UIButton)
if quantitylbl.text == "0"
dismiss(animated: true)
// Save in to userdefault
let section = sender.tag / 100
let row = sender.tag % 100
let dict = arrayCategory[section] as? NSDictionary
let subLimit = getStringValueFromAPIValue(apiValue: dict?.value(forKey: "limit"), defaultValue: "")
let cell = self.tableView.cellForRow(at: IndexPath(row: row, section: section)) as! CustomizationDropDownTableViewCell
if self.section_quantity[section] < Int(truncating: subLimit.numberValue!)
cell.btnDropdown.becomeFirstResponder()
【问题讨论】:
尝试安全地打开单元格。 它不起作用@SavcaMarin 它没有修复崩溃,或者它没有将您带到顶部? 当我滚动到底部时它没有移动到顶部。 哪条线路崩溃了?提供更多细节。此外,我几乎可以肯定,您必须先滚动到单元格tableView.scrollToRow(at: indexPath, at: .top, animated: false)
,然后才能加载单元格及其所有 UI 组件。
【参考方案1】:
let subLimit = getStringValueFromAPIValue(apiValue: dict?.value(forKey: "limit"), defaultValue: "")
let cell = self.tableView.cellForRow(at: IndexPath(row: row, section: section)) as! CustomizationDropDownTableViewCell
我不确定是什么问题导致您的应用崩溃。尝试在代码中设置一些断点。我认为可选问题可能存在问题。
subLimit 是可选的,因此在强制展开时确保它有一个值。 Int(截断:subLimit.numberValue!)
此外,仅当您确定向下转换将始终成功时,才使用强制类型转换运算符(as!)。 请参阅 Apple 的 Swift 文档。 https://docs.swift.org/swift-book/LanguageGuide/TypeCasting.html
【讨论】:
以上是关于Swift - 如何使用 becomeFirstResponder 跳转到顶部的主要内容,如果未能解决你的问题,请参考以下文章
如何在 swift 3.0 中编写此代码,特别是如何在 swift3 中使用宏?
如何使用 Swift Package Manager `swift build` 命令构建 Swift Package 的优化版本