Доступ к имени кнопки функции (члена) - PullRequest
0 голосов
/ 21 апреля 2019

Я пытаюсь получить доступ к имени кнопки с помощью функции configButtonLH() и имени кнопки menuButtonLH.Суть в том, что вы нажимаете кнопку, меню расширяется, вы делаете выбор, и оно скрывает menuButtonLH.Эта часть работает.У меня есть функция onTap(), которую я хочу использовать, чтобы показать ее, но у меня нет доступа к menuButtonLH.

Я пытался, но не повезло:

@objc func onTap() {
    let LH = configButtonLH()
    LH.isHidden = True 

    self.preview.isHidden = true
    self.lockScreen.isHidden = true
    // cancel button
    self.pageOutlet.isHidden = false // dismiss button is not hidden
}

fileprivate func configButtonLH() {
    let menuButtonSize: CGSize = CGSize(width: 64.0, height: 64.0)
    let menuButtonLH = ExpandingMenuButton(frame: CGRect(origin: CGPoint.zero, size: menuButtonSize), image: UIImage(named: "buttonA")!, rotatedImage: UIImage(named: "buttonAL")!)
    menuButtonLH.center = CGPoint(x: 30, y: self.view.bounds.height - 65)
    self.view.addSubview(menuButtonLH)
    // button settings
    menuButtonLH.layer.shadowOpacity = 0.8
    menuButtonLH.layer.shadowRadius = 5
    menuButtonLH.layer.shadowOffset = CGSize(width: 0, height: 6)
    menuButtonLH.menuTitleDirection = .right
    menuButtonLH.bottomViewAlpha = 0.09
    //menuButton2.alpha = 0

    //  Lets hide the right button
    let item1 = ExpandingMenuItem(size: menuButtonSize, title: "Home Screen", image: UIImage(named: "icon")!, highlightedImage: UIImage(named: "chooser-moment-icon-place-highlighted")!, backgroundImage: UIImage(named: "chooser-moment-button"), backgroundHighlightedImage: UIImage(named: "chooser-moment-button-highlighted")) { () -> Void in
        self.preview.isHidden = false
        self.pageOutlet.isHidden = true
       // menuButton2.alpha = 0
    }

    let item2 = ExpandingMenuItem(size: menuButtonSize, title: "Lock Screen", image: UIImage(named: "lock")!, highlightedImage: UIImage(named: "chooser-moment-icon-place-highlighted")!, backgroundImage: UIImage(named: "chooser-moment-button"), backgroundHighlightedImage: UIImage(named: "chooser-moment-button-highlighted")) { () -> Void in
        //  showAlert "Share"
        self.lockScreen.isHidden = false
        self.pageOutlet.isHidden = true
        menuButtonLH.isHidden = true
    }

    menuButtonLH.addMenuItems([item1, item2])

    menuButtonLH.willPresentMenuItems = { (menu) -> Void in
        print("MenuItems will present.")
    }

    menuButtonLH.didDismissMenuItems = { (menu) -> Void in
        print("MenuItems dismissed.")
        // menuButton2.isHidden = false
    }
}

И воттакое функция onTap:

@objc func onTap() {
    self.preview.isHidden = true
    self.lockScreen.isHidden = true
    // cancel button
    self.pageOutlet.isHidden = false // dismiss button is not hidden
}

1 Ответ

0 голосов
/ 21 апреля 2019

В показанном вами коде menuButtonLH определяется в рамках функции "configButtonLH".Он невидим вне функции.

Класс, содержащий эти функции, предположительно является контроллером представления?

Вы можете определить его как свойство экземпляра этого класса, например:

var menuButtonLH: ExpandingMenuButton!

Это должен быть "var", чтобы вы могли инициализировать его после инициализации объекта, и необязательный развёрнутый, если вы гарантируете, что он будет инициализирован перед использованием.

Добавлено:

Единственные развернутые опции, которые я вижу в опубликованном вами коде, - это сбойные инициализаторы в этих вызовах:

    let menuButtonLH = ExpandingMenuButton(frame: CGRect(origin: CGPoint.zero, size: menuButtonSize), image: UIImage(named: "buttonA")!, rotatedImage: UIImage(named: "buttonAL")!)

    //  Lets hide the right button
    let item1 = ExpandingMenuItem(size: menuButtonSize, title: "Home Screen", image: UIImage(named: "icon")!, highlightedImage: UIImage(named: "chooser-moment-icon-place-highlighted")!, backgroundImage: UIImage(named: "chooser-moment-button"), backgroundHighlightedImage: UIImage(named: "chooser-moment-button-highlighted"))

    let item2 = ExpandingMenuItem(size: menuButtonSize, title: "Lock Screen", image: UIImage(named: "lock")!, highlightedImage: UIImage(named: "chooser-moment-icon-place-highlighted")!, backgroundImage: UIImage(named: "chooser-moment-button"), backgroundHighlightedImage: UIImage(named: "chooser-moment-button-highlighted"))

Если один из них вызывает ошибку, вероятнее всего, один илибольше ваших изображений не может быть найдено.

Отладчик должен сообщать вам, где запускается программа.

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