2016-10-15 5 views
1

В настоящее время работает над моим первым приложением IOS. У меня есть кнопка покупки, при этом в настоящее время устанавливается тестовая кнопка на том же контроллере просмотра, что и скрытая. Код выглядит следующим образомКнопка Swift Hide в другом виде Контроллер

Decleration

@IBOutlet weak var Test: UIButton! 

кнопку скрыть на успешной покупки

Test.isHidden = true 

Теперь это работает на моей кнопке Test, который сидел в PurchaseViewController, класс является MasterViewController.Swift. (Кнопка покупки, которая инициирует этот метод, также находится в том же контроллере представления)

PlanViewController также имеет кнопку, а класс также связан с MasterViewController.Swift. У этого есть отдельная кнопка, которую я хочу скрыть от успеха кнопки покупки.

Когда я использую тот же код, что и выше для кнопки, он выходит из строя, это ограничение на управление другими контроллерами представлений, пока вы не в нем? Я бы подумал, что это работало при условии, что они оба имеют Masterviewcontroller.swift как класс

Благодаря

ответ

2

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

Прежде всего, установите идентификатор segue между двумя контроллерами представления, щелкнув по экрану в раскадровке и перейдя к инспектору атрибутов. Я предлагаю goToMasterViewController

В обоих MasterViewController.swift и PurchaseViewController.swift объявить переменную var buttonHidden = false

В PurchaseViewController.swift добавить следующий код, который будет вызываться непосредственно перед переходом к MasterViewController выполняется:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if(segue.identifier == "goToMasterViewController") { 
     let destinationController = segue.destination as! MasterViewController 
     destinationController.buttonHidden = buttonHidden 
    } 
} 

Когда вы скрыть кнопку в PurchaseViewController, также установить buttonHidden = true

И, наконец, в MasterViewController.swift:

override func viewWillAppear(_ animated: Bool) { 
    testButton.isHidden = buttonHidden 
} 
+0

Иногда ** возможно использовать ** для управления взглядами другого вида, но это всегда плохая идея. Я бы сказал, что «вы не должны пытаться манипулировать представлениями/кнопками другого вида контроллера. Это плохая идея». Затем продолжим объяснять правильный способ сделать это. –

+0

Согласен, спасибо. Я отредактировал свой ответ соответственно. –

+0

Спасибо за ответы, ребята, любопытно, почему это плохая идея манипулировать кнопками других просмотров. И спасибо вам за подробное объяснение Остина. Я попытаюсь это сделать в ближайшее время. – uwotm8

Смежные вопросы