Хобрук: Ваш путь к мастерству в программировании

Как определить, загрузился ли UIView

В настоящее время я создаю пользовательский вид. Это представление имеет UITableView с ним. Делегат для этого элемента управления будет базовым классом для пользовательского элемента управления.

class MyView: UIView {

    @IBOutlet weak var autoCompleteView: UITableView!

}

extension MyView: UITableViewDelegate {

}

extension MyView: UITableViewDataSource {

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath as IndexPath)
        cell.textLabel!.text =  "\(indexPath.row) - Its working"
        return cell
    }

    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 2
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 2
    }
}

Теперь в какой-то момент здесь, в этом классе, мне нужно получить делегата для UITableView, но это может произойти только после загрузки представления (иначе autoCompleteView будет nil).

Если бы это было в UIViewController, я мог бы просто добавить его в viewDidLoad, но у меня это не открыто. Итак, как я могу настроить делегата для UITableView


Ответы:


1

Теперь в какой-то момент здесь, в этом классе, мне нужно получить делегат для UITableView, но это может произойти только после загрузки представления.

Я не совсем уверен, что вы имеете в виду. Представление MyView загружается, если вы находитесь внутри его метода. Если бы класса не было, он не мог бы вызывать его метод. Итак, если вы настроите что-то в initWithFrame:, все должно быть в порядке.

Единственное, о чем я могу думать иначе, это если ваше представление выложено в Interface Builder и, таким образом, будет декодировано. В этом случае, хотя представление уже может быть загружено, некоторые ссылки могут не загружаться. Для этого вы получите вызов awakeFromNib после завершения декодирования.

31.07.2017

2

//вы можете попробовать это

class MyView: UIView {
    @IBOutlet weak var autoCompleteView: UITableView!

    override func willMove(toSuperview newSuperview: UIView?) {
        super.willMove(toSuperview: newSuperview)
    }

    override func didMoveToSuperview() {
        super.didMoveToSuperview()
    }
}
31.07.2017
Новые материалы

Получение стоковых обновлений с помощью Python
Для начинающего финансового аналитика Введение Описание: Этот проект Python создает скрипт для получения текущих обновлений акций с финансового веб-сайта Yahoo. Для этого проекта мы..

Это все, что вам нужно знать о Kotlin в 2022 году
Добро пожаловать! Kotlin — это язык программирования, популярность которого, кажется, растет, его действительно можно использовать для создания чего угодно, и если вы хотите узнать о Kotlin,..

Текстовый графический интерфейс с Lanterna на Java
Мой опыт работы с компьютерами (и текстовыми графическими пользовательскими интерфейсами) начался еще в восьмидесятых, когда я был ребенком, на дне рождения друга. Это был «новенький» Amstrad..

Перезарядите свой мозг: умопомрачительный потенциал мозговых компьютерных интерфейсов
Способность читать свои мысли и управлять объектами разумом долгое время были предметом человеческого любопытства, ограниченного областью научной фантастики… то есть до сих пор? С технологией,..

Основы C# — Нулевой оператор объединения (??)
Оператор ?? называется null-coalescing operator . Этот оператор используется для предоставления значения по умолчанию, если значение операнда в левой части оператора равно null ...

Сравнение номеров версий в C++ с использованием синтаксического анализа строк
Номера версий обычно используются для обозначения развития или обновлений программного обеспечения или любого другого продукта. При работе с номерами версий в C++ может быть полезно сравнить две..

В мир искусственного интеллекта…
ИИ — это новое топливо в современном мире. Куда бы вы ни обратились, с кем бы вы ни разговаривали — они, как правило, упоминают об ИИ хотя бы раз в ходе разговора. ИИ гудит повсюду. У каждого..