对于我的应用程序,我定义了一个名为Event
的类,该类的实现如下:
class Event {
var test_value: Int
init?(Detail_Test_Value: Int) {
self.test_value = Detail_Test_Value
}
}
我已经为应用程序实现了一个UITableView
接口,并能够将新实例添加到列表中,在viewcontroller
中可以添加新实例,我准备了该类的新实例Event
如下:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
guard let button = sender as? UIBarButtonItem, button === saveButton else {
os_log("Cancelling Action, The Save Button Was not Pressed", log: OSLog.default,type: .debug)
return
}
let TEST_VALUE = (test_value_label.text!)
event = Event(Detail_Test_Value: Int(TEST_VALUE)!)
}
然后在TableViewController
中,将新创建的类Event
的实例附加到events
函数中名为unwind
的列表中,如下所示:
@IBAction func unwindToEventList(sender: UIStoryboardSegue){
if let sourceViewController = sender.source as NewEventViewController, let event = sourceViewController.event {
if let selectedIndexPath = tableView.indexPathForSelectedRow {
events[selectedIndexPath.row] = event
tableView.reloadRows(at: [selectedIndexPath], with: .none)
} else {
let newIndexPath = IndexPath(row: events.count, section: 0)
events.append(event)
tableView.insertRows(at: [newIndexPath], with: .automatic)
}
}
}
我的目标是为类test_value
的所有实例获取Event
的总和,并在另一个UILabel
的{{1}}中显示值,因为所有实例被附加到列表View
上,我尝试在同一events
中定义一个函数,如下所示:
TableViewController
然后每次打开func get_test_value () -> Int{
var a = 0
for e in events{
a += e.test_value
}
return a
}
时,调用该函数并将其值分配给另一个UILabel
中的View
:
View
我没有收到任何错误,并且该应用程序可以正常构建和运行,但是override func viewDidAppear(_ animated: Bool) {
let tabel_view = TableViewController()
test_label.text = String(table_view.get_test_value())
}
将始终显示UILabel
,并且不会因重新打开它所在的0
而改变添加更多具有非零ViewController
的{{1}}实例,我尝试使用代码将实例追加到列表Event
,而不是将其与完整的UI添加在一起,但是值仍然保持{{1 }}无论如何。我该如何解决这个问题?