【发布时间】:2019-02-07 10:06:52
【问题描述】:
我在从另一个 vc 更新 tableview 时遇到问题。
最初我在CalendarTableViewControllerlike 中声明它:
func reloadData() {
print("days array in tableview is: \(WorkshopBookingsViewController.daysArray)")
calendarTableView.reloadData()
// tableView.reloadData()
}
它被WorkshopBookingsViewController 调用,例如:
func newDate() {
let calendar = Calendar.current
let currentDate = self.dateToDisplay!
let components = (calendar as NSCalendar).components([.year, .month, .day, .weekday, .hour, .minute] , from: currentDate)
self.displayedMonth = components.month!
self.monthCounter = self.displayedMonth - 1
print("mounthCounter is:\(self.monthCounter)")
//get days in courrent month ansd append it to daysArray to populate TableView
let daysRange = calendar.range(of: .day, in: .month, for: currentDate)!
WorkshopBookingsViewController.daysArray.removeAll()
for day in 1...daysRange.count {
WorkshopBookingsViewController.daysArray.append(String(day))
}
print(WorkshopBookingsViewController.daysArray)
self.actualMonthLabel.text = self.monthsArray[self.monthCounter]
let tableView = CalendarTableViewController()
// let tableView:CalendarTableViewController!
tableView.reloadData()
}
在函数定义中我得到了 Found Nil 错误。
我尝试实施解决方案 reload tableView from Another ViewController Swift 4.2
从注释掉的行可以看出
// let tableView:CalendarTableViewController!
但它给我带来了另一个错误:
Constant 'tableView' used before being initialized.
谁能明白为什么会这样?
【问题讨论】:
-
另一个视图控制器是什么意思?需要添加到导航堆栈中的视图控制器还是已经在导航堆栈中的视图控制器?
-
您应该更正您发布的代码。他们不匹配。由于
tableViewController 没有你提到的reloadData()和calendarTableView根本不存在 -
@MahendraGP。我从
WorkshopBookingsViewController调用reloadData()函数,它有一个容器视图,里面有tableview。 -
CalendarTableViewController是在 Interface Builder 中设计的吗?如果是,则默认初始化程序CalendarTableViewController()创建一个新实例,其中未连接的出口不是故事板中的实例。 -
@vadian。我明白了,所以我要实例化一个新的而不是引用现有的?是因为我缺少包含 tableview 的容器视图的出口吗?
标签: ios swift uitableview