Скрытие кнопки при успешном входе в систему или регистрации - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть два экрана A и B.

На экране A у меня есть один UIBarButtonItem, который используется для входа / регистрации.

При нажатии этой кнопки откроется новое всплывающее окно с видом входа в систему и регистрации.

Теперь мне нужно скрыть кнопку входа / регистрации на экране A при успешной регистрации или входе на экране B, который отображался как всплывающее окно.

На данный момент я закрыл экран B при успешной регистрации / регистрации и при следующем запуске приложения кнопка скрыта.

Я использовал это на экране A, чтобы скрыть кнопку.

if(currentUser != nil) {
    loginRegisterButton.isHidden = true
}else {
    loginRegisterButton.isHidden = false
}

Это работает только при следующем запуске приложения. Чего я хочу, так это успешного закрытия экрана B.

Ответы [ 2 ]

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

Передать обратный вызов делегата из ViewControllerB в ViewControllerA

Протокол делегирования:

protocol ViewControllerBDelegate {
   func loginSuccess(user: YOUR_CURRENT_USER_OBJECT_TYPE)
}

В ViewControllerB:

var delegate: ViewControllerBDelegate?

после успешной регистрации

self.delegate?.loginSuccess(user: YOUR_CURRENT_USER_OBJECT_VALUE)

В ViewControllerA:

extension ViewControllerA: ViewControllerBDelegate {
   func loginSuccess(user: YOUR_CURRENT_USER_OBJECT_TYPE) {
     currentUser = user
   }
}

При открытом viewcontrollerB:

let controller = ViewControllerB(nibName: "ViewControllerB", bundle: nil)
controller.delegate = self 
self.navigationController?.pushViewController(controller, animated: false)
0 голосов
/ 05 апреля 2019

Вы можете передать в качестве параметра контроллер представления, который имеет элемент UIBarButton, из первого контроллера представления в представление, которое обрабатывает вход в систему, и при успешном входе в систему скрыть от представления кнопку, которая существует в исходном контроллере представления.Пример.

class FirstVC: UIViewController {
    var barButtonItem: UIBarButtonItem?

//    ...

func presentPopUp() {
    let popUp = PopUpView()
    //Configure PopUpView class that handles the login
    popUp.parentViewController = self
}
}

class PopUpView: UIView {
    var parentViewController: FirstVC?

func login() {
    // If successfull
    parentViewController?.navigationItem.leftBarButtonItem = nil
}
}
...