iOS: получите «UIViewController» из «UIButton» - PullRequest
0 голосов
/ 22 сентября 2019

Мне нужно получить ссылку (объект) UIViewController в подклассе UIButton.Здесь я попробовал что-то, но не смог.

class NavigationBarButton: UIButton {


    override func didMoveToSuperview() {
        super.didMoveToSuperview()

        var viewController: UIViewController? {
            var nextResponder: UIResponder? = self
            repeat {
                nextResponder = nextResponder?.next

                if let viewController = nextResponder as? UIViewController {
                    return viewController
                }

            } while nextResponder != nil

            return nil
        }

        guard let vcViewController = self.viewController else { print("NavigationBarButton view controller could not found"); return }

        print("handle further operations with ViewController of Button")

    }

}

class FirstVC: UIViewController {

    @IBOutlet weak var myButton: NavigationBarButton?


}

Результат:
Не удалось найти контроллер представления NavigationBarButton

Есть лииначе, не обновляя UIViewController, я могу получить ссылку на контроллер представления в подклассе UIButton.Любой другой метод UIButton может помочь мне здесь, где я могу получить контроллер вида кнопки.

Подобный SO Que.но не подходит для этой проблемы: Получить текущий UIViewController из класса UIButton

1 Ответ

1 голос
/ 23 сентября 2019

Это может сработать для вас.

class NavigationBarButton: UIButton {


    override func didMoveToWindow() {
        super.didMoveToWindow()

        var viewController: UIViewController? {
            var nextResponder: UIResponder? = self
            repeat {
                nextResponder = nextResponder?.next

                if let viewController = nextResponder as? UIViewController {
                    return viewController
                }

            } while nextResponder != nil

            return nil
        }

        guard let vcViewController = self.viewController else { print("NavigationBarButton view controller could not found"); return }

        print("handle further operations with ViewController of Button")

    }

}

class FirstVC: UIViewController {

    @IBOutlet weak var myButton: NavigationBarButton?


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