2016-03-13 5 views
0

Вы можете видеть на фотографии настройки моего пользовательского интерфейса. Цель состоит в том, когда кнопка нажата, если число больше 9, метка на первом контроллере просмотра, чтобы изменить на «число больше 9», и если его меньше 9, следует выполнить сеанс segue, а метка на secondView должна изменится на «число больше 9 .. Это то, что я делал до сих пор, но, когда переход срабатывает метка на secondView не меняется ..Выполнение segue, если выполнено условие

class ViewController: UIViewController { 
    @IBOutlet weak var labelFirst: UILabel! 
    @IBOutlet weak var numberEntered: UITextField! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    override func shouldPerformSegueWithIdentifier(identifier: String!, sender: AnyObject!) -> Bool { 
      var number: Int? { 
       get{ 
        return Int(numberEntered.text!) 
       } 

      } 

      if number>9 { 
       labelFirst.text="number is greater than 9" 
       return false} 

      else { 

     return true 
       func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { 
        if (segue.identifier=="segue"){ 

         let destinationVC:secondView = segue.destinationViewController as! secondView 
         destinationVC.outputText="number is smaller than 9" 

        } 
        } 
     } 
    } 
} 

переход соединен с кнопкой и направляет на второй взгляд

secondView:.

import UIKit 

class secondView: UIViewController { 

    @IBOutlet weak var label: UILabel! 

    var outputText=String() 

    override func viewDidLoad() { 

     label.text=outputText 
    } 

} 

ui

+0

Я голосовал, чтобы закрыть этот вопрос, поскольку [непонятно, что вы спрашиваете] (http://importblogkit.com/2015/07/does-not-work/). – nhgrif

+0

привет, я перефразировал, все еще неясно? – user440309

+0

где фотография? –

ответ

0

Ваш метод prepareForSegue находится в неправильном месте, он должен быть вне метода shouldPerfomSegue и помечаются переопределения.

+0

спасибо !! Не могли бы вы объяснить, почему это должно было выйти за пределы shouldPerformSegue? – user440309

+0

Когда вы объявляете функцию внутри другой функции, вы можете использовать ее только там, чтобы вы могли ее назвать так, как хотите, и компилятор не будет жаловаться, даже если он назван так же, как и другая унаследованная функция, то же самое верно для свойств. Итак, вы создали локальную функцию, которая просто называется функцией, которую вы хотели использовать, но не фактической унаследованной функцией, которую вы намеревались использовать. –

+0

, поэтому функция shouldPerformSegueWithIdentifier проверяет только выполнение segue или нет, но фактически не выполняет segue? и в случае истины готовитсяForSegue приходит и выполняет segue? – user440309

0

Причина, по которой он не обновляется на втором экране, заключается в том, что вы делаете это внутри viewDidLoad. Это происходит только один раз. Переместите код в viewWillAppear.

import UIKit 

class secondView: UIViewController { 

    @IBOutlet weak var label: UILabel! 

    var outputText=String() 

    override func viewWillAppear() { 
     super.viewWillAppear() 
     label.text = outputText 
    } 
} 
Смежные вопросы