2017-05-26 203 views
3

我将如何去检查一个函数是否被调用?我创建了一个功能,看是否水平完成,像这样:检查函数是否被调用?

func levelOneCompleted(){ 

} 

当一个水平打,我叫()levelOneCompleted功能。

现场然后去另一个场景。在这个场景中,我想检查函数是否被调用。我想我可以做出某种“如果陈述”。

if levelOneCompleted is called { 
//do this 

else{ 

//do this 
} 

这样做的最好方法是什么?

回答

3

设置一个布尔标志,truelevelOneCompleted()

var isLevelOneCompleted = false 

func levelOneCompleted(){ 
    // do things... 
    isLevelOneCompleted = true 
} 

后来......

if isLevelOneCompleted { 
    //do this 
} else { 
    //do this 
} 
+0

感谢您的回复!有两种方法可以在两个不同的场景中执行此操作吗?场景1调用功能并切换到场景2.场景2是否可以从场景1中查看功能? –

+0

@MattCantrelle场景2如何呈现?使用故事板赛格?如果是这样,我会在视图控制器中设置一个属性,指出在'prepareForSegue'方法中调用了'levelOneCompleted()'。 – Paolo

+0

不,先生,我实际上不使用故事板为这个项目。在第一个场景中,我通过一个简单的“let sceneTwo = SKscene(filenamed:”this“)”设置了第二个场景。然后我打电话来呈现这个场景。 –

1

斯威夫特3 &的Xcode 8.3.2

有2招做到这一点,这里是代码:

// Async operation 
func levelOneCompleted(completion: (_ completed: Bool) -> Void) { 
    // do your function here 
    completion(true) 
} 

// Here is how to use it 
// than u can declare this in viewDidLoad or viewDidAppear, everywhere you name it 
override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 

    // this is async operation 
    levelOneCompleted { (completed) in 
     if completed { 
      print("levelOneCompleted is complete") 
      // do something if levelOneCompleted is complete 

      DispatchQueue.main.async { 
       // Update your UI 
      } 
     } else { 
      print("levelOneCompleted is not completee") 
      // do something if levelOneCompleted is not complete 

      DispatchQueue.main.async { 
       // Update your UI or show an alert 
      } 
     } 
    } 
} 


// Or u can use this code too, and this is Sync operation 
var isLevelTwoCompleted: Bool = false 
func levelOneCompleted() { 
    // do your function here 
    isLevelTwoCompleted = true 
} 


// to check it u can put this function everywhere you need it 
if isLevelTwoCompleted { 
    //do something if level two is complete 
} else { 
    //do something if level two is not complete 
} 
+0

嗨马特,我想知道这是否足以让你走上正轨。看起来,如果您从同一个控制器调用一级和二级,它将起作用。如果你仍然坚持,只需编辑上面的问题。 – Mozahler