【发布时间】:2019-05-21 17:31:16
【问题描述】:
我正在创建一个应用程序来扫描条形码并添加条形码值(以及名称和日期,但稍后会处理)。扫描条形码后,我调用了 add 方法,该方法应该将其添加到我的 tableview 中,但我在 reloadData() 处遇到错误。
import UIKit
class FirstViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
var data: [Ticket] = []
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
data = createArray()
}
func createArray() -> [Ticket] {
let video1 = Ticket(number: "123456789", name: "First Name - Last Name", date: "May 18th, 2019, 7 am")
let video2 = Ticket(number: "123456789", name: "First Name - Last Name", date: "May 18th, 2019, 7 am")
return [video1, video2]
}
}
extension FirstViewController: UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let ticket = data[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "TicketCell") as! TicketCell
cell.setTicket(ticket: ticket)
return cell
}
func add (_ code: String)
{
let tic = Ticket(number: code, name: "First Name - LastName", date: "May 18th, 2019, 10 am")
print(tic.number1)
print(tic.name1)
print(tic.date1)
data.append(tic)
self.tableView.reloadData() // Error Occurs Here
}
}
这是我从另一个控制器调用 add 方法的地方。字符串“code”是条形码的值:
func found(code: String) {
FirstViewController().add(code)
viewDidLoad()
}
【问题讨论】:
-
显示如何以及在何处调用此
add方法。 -
您很可能正在创建另一个没有情节提要的
FirstViewController实例,因此未设置tableView出口。 -
是的,你的编辑证明了我的理论。
-
FirstViewController()创建视图控制器的一个新实例,它不是故事板中的实例。因此插座未连接,代码崩溃。 -
永远不要自己打电话给
viewDidLoad。
标签: swift