静态 TableView 获取 NSRangeException
Static TableView gets NSRangeException
我有一个带有静态单元格的 UITableViewController
,当我 运行 应用程序并单击指向它的按钮时,我在 AppDelegate 中收到一个 SIGABRT 信号。
我试图找到未使用的插座,但没有用。
这是控制台日志:
UITableViewController代码:
import UIKit
import os.log
class SettingsTableViewController: UITableViewController {
// MARK: Properties
@IBOutlet weak var noteDisplayKindSwitch: UISwitch!
override func viewDidLoad() {
super.viewDidLoad()
notedisplayKindSwitch.setOn(Settings._displaynotesAsNames, animated: false)
}
@IBAction func ChangeNoteDisplayKind(_ sender: UISwitch) {
Settings._displayNotesAsNames = sender.isOn
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
return 2
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}
}
情节提要中的UITableViewController
:
连接:
我做错了什么?
谢谢。
阅读错误信息,请勿post代码图片
在您的 tableView:cellforRowAtIndexPath
方法中的某处,有一个空数组,但您正在尝试访问索引 1 处的元素。
您正在使用 静态单元格。没有理由实施 numberOfSections
和 numberOfRowsInSection
,因为它们是由 Storyboard 中的静态布局指定的。
因为你实施了:
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}
您告诉 iOS 每个部分都有 3
行,这是谎言。因此 iOS 尝试访问第一部分的第二行并因数组索引超出范围而崩溃,因为该部分只有 1
行。
所以,删除 numberOfSections
和 numberOfRowsInSection
的实现,你应该可以开始了。
我有一个带有静态单元格的 UITableViewController
,当我 运行 应用程序并单击指向它的按钮时,我在 AppDelegate 中收到一个 SIGABRT 信号。
我试图找到未使用的插座,但没有用。
这是控制台日志:
UITableViewController代码:
import UIKit
import os.log
class SettingsTableViewController: UITableViewController {
// MARK: Properties
@IBOutlet weak var noteDisplayKindSwitch: UISwitch!
override func viewDidLoad() {
super.viewDidLoad()
notedisplayKindSwitch.setOn(Settings._displaynotesAsNames, animated: false)
}
@IBAction func ChangeNoteDisplayKind(_ sender: UISwitch) {
Settings._displayNotesAsNames = sender.isOn
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
return 2
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}
}
情节提要中的UITableViewController
:
连接:
我做错了什么? 谢谢。
阅读错误信息,请勿post代码图片
在您的 tableView:cellforRowAtIndexPath
方法中的某处,有一个空数组,但您正在尝试访问索引 1 处的元素。
您正在使用 静态单元格。没有理由实施 numberOfSections
和 numberOfRowsInSection
,因为它们是由 Storyboard 中的静态布局指定的。
因为你实施了:
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}
您告诉 iOS 每个部分都有 3
行,这是谎言。因此 iOS 尝试访问第一部分的第二行并因数组索引超出范围而崩溃,因为该部分只有 1
行。
所以,删除 numberOfSections
和 numberOfRowsInSection
的实现,你应该可以开始了。