UITableViewController не обновляется, когда reloadData переходит с ненулевых на ноль разделов на iPad - PullRequest
0 голосов
/ 08 октября 2018

На iPad, в UISplitViewController, у меня есть UITableViewController в правом разделе, показывающий детали того, что выбрано слева.Поэтому, когда я отменяю выделение всего слева и, следовательно, устанавливаю для объекта детализации значение nil в подробном представлении, я хотел бы очистить таблицу и отобразить сообщение с предложением пользователю выбрать элемент.

Вот почемуВ моем детальном подклассе UITableViewController содержится следующее:

var reference: Reference? {
    didSet {
        self.refreshInterface()
    }
}

func refreshInterface() {
    if let titleLabel = self.titleLabel {
        if let ref = reference {
            titleLabel.text = ref.projectName
        } else {
            titleLabel.text = NSLocalizedString("Please select a reference", comment: "")
        }
    }
    tableView.reloadData()
}

override func numberOfSections(in tableView: UITableView) -> Int {
    if(self.reference != nil) {
        return 5
    } else {
        return 0
    }
}

И я проверил с помощью отладчика, что после того, как я установил ссылку на nil, вызывается numberOfSections и возвращается 0. Но затем по какой-то причине все пользовательский интерфейстаблицы не очищены.У меня все еще есть те же строки и разделы, что и при выбранной ссылке.Я что-то пропустил?Это потенциальная ошибка в Cocoa Touch?

1 Ответ

0 голосов
/ 09 октября 2018

Я понял это.Проблема была не в моем детальном контроллере, а в главном.Я не учел, что когда я показываю контроллер подробного вида при выборе элемента в главном, контроллер разделенного представления каждый раз создает другой экземпляр контроллера подробного представления.И поскольку я настраивал объект детализации для старого экземпляра, старый экземпляр обновлялся, но другой уже отображался.Все, что мне нужно было сделать, чтобы исправить мою проблему, - это убедиться, что я всегда устанавливаю свой объект detail на текущий экземпляр контроллера подробного представления.

Надеюсь, это кому-нибудь пригодится.

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