2016-11-27 8 views
1

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

сейчас моя проблема может быть разбита на это:

У меня есть один тест View Controller, который может отображать мой объект «Test», показывая описание и название. У меня также есть массив объектов Test. В верхнем правом углу есть кнопка «пропустить этот тест», и если пользователь нажмет на нее, диспетчер представлений перейдет к самому себе, но изменит объект Test, который отображается, например. его просто в основном перебирает массив тестов. Я изменил готовность к методам segue, соответственно, чтобы вытолкнуть данные через контроллеры представления.

Однако, я хочу, чтобы иметь возможность перейти на совершенно другой ViewController (позволяет просто называть его FinalViewController), если я достиг последнего теста в моем тестовом массиве.

Теперь это та часть, которую я не могу исправить.

Я хотел бы создать segue непосредственно из кнопки «пропустить тест», только чтобы он переходил к другому контроллеру вида, в зависимости от определенного состояния. Однако, поскольку я попытался создать segue в IB, щелкнув правой кнопкой мыши на Button и потянув его в FinalViewController, он удалил мой предыдущий сеанс, который у меня был для этой кнопки.

Кто-нибудь знает, есть ли проблема в этой проблеме? Спасибо!!!!

ответ

3

Однако, как я попытался создать SEGUE в IB, щелкнув правой кнопкой мыши на кнопки и потянув его на FinalViewController, он стер мой предыдущий SEGUE я имел для этой кнопки

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

После создания segue с viewController вы можете -программировать вызов метода performSegue и обрабатывать, какие данные должны быть переданы следующему viewController, реализовав метод prepareForSegue.

Для получения дополнительной информации, пожалуйста, отметьте my answer, чтобы узнать, как создавать множественные segues с идентификаторами и работать с ними.


EDIT:

Если вы хотите, чтобы нажать на тот же текущий ViewController, preformSegue метод не использовать решение, вместо этого, вы должны нажать/присутствовать же ViewContoroller это сам:

class ViewController: UIViewController { 
    var myString: String? 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // here we go 
     let storyboard = UIStoryboard(name: "Main", bundle: nil) 
     let sameViewController = storyboard.instantiateViewControllerWithIdentifier("ViewControllerStoryboardID") as! ViewController 
     sameViewController.myString = "the value of the new myString" 
     navigationController?.pushViewController(sameViewController, animated: true) 

     print(myString) 
    } 
} 

Возможно, вы не хотите его реализовывать в viewDidLoad, это просто для демонстрационных целей.

Убедитесь, что ViewController имеет раскадровки идентификатор (в фрагменте коды, я предполагаю, что это "ViewControllerStoryboardID"):

enter image description here

Надеется, что это помогло.

+0

Если я пытаюсь создать segue между моим контроллером представления и сам он не работает ...? :( – Misha

+0

«сам» означает, что вы должны получить свой текущий viewController и нажать на него снова. –

+0

должен ли я сделать это в методе performSegue или prepareforsegue или где именно я должен нажать его ...? Извините, я очень новый, и я не хочу точно знаю, о чем вы говорите! – Misha