Обнаружена нулевая ошибка при перезагрузке табличного представления из другого контроллера Swift представления - PullRequest
0 голосов
/ 07 февраля 2019

У меня проблемы с обновлением таблицы с другого vc.Сначала я объявляю это в CalendarTableViewController как:

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.

Я пытался реализовать решение из перезагрузить tableView из другого ViewController Swift 4.2

, как вы можете видеть из закомментированной строки

// let tableView:CalendarTableViewController!

но мне кажется еще одна ошибка:

Constant 'tableView' used before being initialized.

Кто-нибудь может понять, почему это происходит?

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Я наконец понял причину своих ошибок.Я использовал пользовательский класс для CalendarTableVIew, содержащийся в представлении контейнера.Таким образом, я полностью избавился от представления контейнера, и я просто разместил TableView, и у меня есть выход, ссылающийся на него.Первоначальный выбор пользовательского класса заключался в том, что я не только делил на подклассы WorkshopBookingsViewController до UITableViewDelegate и UITableViewDataSource, но также и UITableView .., следовательно, ошибка, которая вводила меня в заблуждение при полном выборе встраивания CalendarTableVIew вконтейнер, но в этом нет необходимости, так как у меня также будет представление коллекции, я просто подкласс от WorkshopBookingsViewController до UICollectionViewDelegate и UICollectionViewDataSource.Благодаря вашей помощи, ребята, я мог видеть, в чем дело.Большое спасибо, как обычно, здорово быть частью этого сообщества.

0 голосов
/ 07 февраля 2019

Вы создали CalendarTableViewController и сразу попытаетесь получить доступ к подпредставлению в этом CalendarTableViewController.Но методы loadViews () и viewDidLoad () еще не вызваны, и все, что вы просматриваете, равно нулю.Я рекомендую вам прочитать о жизненном цикле UIViewController в документации https://developer.apple.com/reference/uikit/uiviewcontroller

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...