Я совершенно новичок в этом. Я потратил несколько часов, чтобы обсудить различные вопросы по этой теме, но не смог найти ответ, который мне подходит.Как перезагрузить табличное представление с помощью контроллера вида (swift)
У меня есть viewcontroller (не tableviewcontroller) с представлением tableview как subview. Мой вопрос заключается в том, как перезагрузить данные таблицы внутри: viewwillappear метода контроллера вида. Внутри метода я не могу «получить доступ» к экземпляру tableview. (Также я понимаю, что я не могу использовать reloaddata(), потому что я не использовал tableviewcontroller).
Знаете ли вы какое-нибудь простое решение? (Я очень предположить, что протокол может помочь в этом?)
это код короче:
class ViewController3: UIViewController, UITableViewDataSource, UITableViewDelegate {
var Person_data = [Person]()
override func viewDidLoad() {
super.viewDidLoad()
let tb: UITableView = UITableView(frame: CGRect(x: 10, y: 50, width: 200, height:600), style: UITableViewStyle.Plain)
tb.dataSource = self
tb.delegate = self
super.view.addSubview(tb)
fetch_data()
}
func tableView(tableview: UITableView, numberOfRowsInSection section: Int) -> Int {
let rows = Person_data.count
return rows
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell: UITableViewCell = UITableViewCell()
cell.textLabel?.text = Person_data[indexPath.row].name
return cell
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
fetch_data()
// reload at this point
}
func fetch_data() {
let tb_fetchRequest = NSFetchRequest(entityName: "Person")
do {
let tb_fetchResults = try my_moc.executeFetchRequest(tb_fetchRequest) as? [Person]
Person_data = tb_fetchResults!
} catch let error as NSError {
print("request error: \(error)")
}
}
}
Спасибо за подсказку. Я посмотрел более подробно на переменные экземпляра – Netzer
Также обратите внимание на ответ @ Arsen, в котором показано, как можно предотвратить возможность того, что tableView не может быть необязательно инициализировать его немедленно. Этот метод часто не работает с элементами пользовательского интерфейса, но в этом случае он работает. –