2015-01-20 3 views
2

"홈"이라는보기 컨트롤러가 있는데 그 중 하나를 호출하려면 myFunction()이라고합니다.AppDelegate.swift의 메소드를 어떻게 참조합니까?

let home = Home() as! UIViewController 
home.myFunction() 

이것은 작동하지 않습니다. 왜? 홈 다음 rootViewController 경우

+0

내 질문에 투표하지 말고 도와 주시겠습니까? 감사! – Cesare

+1

IMO 좋은 질문이 아닙니다. 그것은 상당히 길며 당신의 의도가 100 % 명확하지 않습니다. 그리고 나서 또한 "하지만 이봐, 나는 운이 없어!", 그것은 절대적으로 불필요합니다. 프로그래밍은 행운과는 아무런 관련이 없습니다. –

+0

의견을 보내 주셔서 감사합니다. 감사합니다. 최대한 정확하고 간결하게하려고했지만 질문을 편집하기 위해 최선을 다할 것입니다. – Cesare

답변

5

당신은 그렇게함으로써 AppDelegate에 방법에서 animateStuff 메서드를 호출 할 수 있습니다 : 당신의 rootViewContoller하지

if let viewController = self.window?.rootViewController? as? Home { 
    viewController.animateStuff() 
} 

Home 경우에, 당신은 presentedView 컨트롤러가 Home 다음 전화인지 확인해야 그 방법 :

if let viewController = self.window?.rootViewController.presentedViewController as? Home { 
    viewController.animateStuff() 
} 

그리고 마침내 animateStuff 메소드가 버튼을 초기 s tate

func animateStuff(){ 
    let optionsAnimateStuff = UIViewAnimationOptions.Repeat | UIViewAnimationOptions.Autoreverse | UIViewAnimationOptions.AllowUserInteraction 
    self.buttonPlay.transform = CGAffineTransformMakeScale(1.0, 1.0) 
    UIView.animateWithDuration(1.0, delay: 3.0, options: 
     optionsAnimateStuff, animations: { 
      self.buttonPlay.transform = CGAffineTransformMakeScale(1.13, 1.13) 
     }, completion: { finished in 
    }) 
} 
+0

내 질문에 답변 해 주셔서 감사합니다. 귀하의 코드가 잘 작동한다고 확신하지만 앱을 종료 할 때마다 (종료하지 말고 그냥 홈 화면으로 이동) 애니메이션을 다시 열면 다시 시작됩니다. 아이디어 있니? 또한'viewController.animateStuff()'대신에'Home.animateStuff()'가되어서는 안된다? 정말 고맙습니다! – Cesare

+0

아니요. Home.animateStuff()가 아니어야합니다. 작동 시키려면 appdelegate의 applicationDidBecomeActive 함수 안에 위의 코드를 사용해야합니다 (응용 프로그램 : UIApplication, didFinishLaunchingWithOptions launchOptions : [NSObject : AnyObject]?) –

+0

도움을 주셔서 감사합니다! 내 AppDelegate 파일의 모양은 다음과 같습니다. http://pastebin.com/0GJ1d9he. 고맙습니다! – Cesare

관련 문제