Как правильно работать с перьями, используя swift? - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть несколько вопросов относительно перьев.

  1. Как динамически или программно загрузить перо на мой UIView в View Controller? Я знаю, что вы можете просто добавить пользовательский класс пера, введя класс пера swift здесь:

Пользовательский класс

Я ищу, как изменить этот атрибут, например, при нажатии кнопки я хочу удалить или добавить его. Я попытался создать экземпляр файла swift, но не могу его проверить. Я также попытался изменить владельца файла .xib, но ему нужен только UIView, поэтому я не могу сделать свой View Controller его владельцем. Я пытался использовать

view.addSubiew(view: UIView)

Но я не знаю, как правильно создать экземпляр моего Nib-файла как UIView. Он продолжает просить NSCoder, и я понятия не имею, как создать его экземпляр. Было бы полезно, если бы кто-то мог сказать мне, как добавить и удалить пользовательский класс, который будет полезен.

  1. Как передать данные с моего View Controller на перо?

  2. Как запустить функции после полной загрузки пера? Вот код swift-класса .xib-файла.

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)    
        if (self.subviews.count == 0) {
            guard let view = loadViewFromNib() else {return}
            view.frame = self.bounds
            self.addSubview(view)
            mainView = view
            -> btn.layer.cornerRadius = 5
        }
    }
    
    private func loadViewFromNib() -> UIView? {
        let bundle = Bundle(for: type(of: self))
        let nib = UINib(nibName: "NibFile", bundle: bundle)
        return nib.instantiate(withOwner: self, options: nil).first as? UIView
    }
    

Это прекрасно загружает представление, но всякий раз, когда я пытаюсь запустить что-нибудь еще в блоках кода, например, где он отмечен (я хотел изменить угловой радиус кнопки после загрузки представления), я получаю ноль IBOutlet , Он просто говорит, что кнопка ноль. Где я могу добавить эту функцию?

Я тоже пытался это сделать:

override func awakeFromNib() {
    btnLogin.layer.cornerRadius = 5
}

Все еще ноль, я запутался здесь, и исследования зашли в тупик или просто то, что мне не нужно. Любая помощь будет оценена. Спасибо!

1 Ответ

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

Итак, я много тестировал и придумал:

  1. Как динамически или программно загрузить перо на мой UIView в View Controller?

Я удалил требуемый init? функция из кончика и просто инициализировать его в контроллере вида. В основном я переместил код, который загружает файл пера из необходимого init? Функция, куда я хочу загрузить его, скажем, событие нажатия кнопки на каком-то контроллере представления. Я просто добавляю это:

func loadView(nibName: String, uiview: UIView) {
    let view: UIView = Bundle.main.loadNibNamed(nibName, owner: self, options: nil)?[0] as! UIView
    view.frame = uiview.bounds
    view.autoresizingMask = [.flexibleHeight, .flexibleWidth]
    uiview.addSubview(view)
}

uiview - это вид, куда я хочу добавить перо.

  1. Как передать данные с моего View Controller на перо?

Я вызываю функцию в кончике и передаю данные в качестве параметра / с.

  1. Как запустить функции после полной загрузки пера?

Если я сделаю то, что сделал в первом вопросе, тогда я могу просто запустить любую функцию в

override func awakeFromNib() {
}

и он запускается после загрузки пера.

...