2016-08-31 4 views
0

모달보기 컨트롤러에 모두 데이터를 전달하는 네 개의 버튼이있는 앱이 있습니다.Google AdMob 삽입 간행 대리 방법을 통해 세그먼트 데이터 전달

@IBAction func servicesButton(sender: UIButton) { 
    adCounter += 1 
    if adCounter == 4 { 
     adCounter = 0 
     if (interstitial.isReady) { 
      interstitial.presentFromRootViewController(self) 
      interstitial = createAd() 
     } 
     else { 
      self.performSegueWithIdentifier("modalSegue", sender: sender) 
     } 
    } 
    else { 
     self.performSegueWithIdentifier("modalSegue", sender: sender) 
    } 
} 

완벽한 작품 : 이것은 4 개 개의 버튼에 태그를 지정하고, prepareForSegue

다음
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

    if segue.identifier == "modalSegue" { 
     let secondViewController = segue.destinationViewController as! ModalViewController 
     if sender?.tag == 1 { 
      secondViewController.title = "Lawn Mowing" 
     } 
     else if sender?.tag == 2 { 
      secondViewController.title = "Landscaping" 
     } 
     else if sender?.tag == 3 { 
      secondViewController.title = "Hardscaping" 
     } 
     else if sender?.tag == 4 { 
      secondViewController.title = "Tree Removal" 
     } 
    } 
} 

내부에 약간의 조건문을 추가하여 수행됩니다 나의 버튼입니다. 나는 (servicesButton)에 AdMob의 전면 광고

모든 4 버튼 탭을 소개 할 때

문제

, 나는 삽입 광고 전화 온다. 틈새가 (interstitialDidDismissScreen을 통해) 닫을 때, 나는 모달 뷰 컨트롤러에 SEGUE를 수행

func interstitialDidDismissScreen(ad: GADInterstitial!) { 
    self.performSegueWithIdentifier("modalSegue", sender: nil) 
} 

그러나 데이터가 전달되지됩니다! : 모달 그냥 secondViewController 제목없이로드합니다. 단추 태그를 제공하고 데이터를 전달하는 보낸 사람이 없기 때문에 나는 믿습니다 ... 맞습니까? 또한 보낸 사람 : 시도한 interstitial 대리자 메서드, 하지만 아무것도하지 않았다.

을 나는 사용자가 간질을 일축? 또는이 처리하는 전체 더 좋은 방법이 후 모달 뷰 컨트롤러 이 정보를 전달하는 데 계속 할 수 있습니까? 난로드 간질 필요해 실수로 도청의 가능성이 훨씬 적어지기 때문에 세그 (segue) 이전에 다시 켜십시오.

감사합니다. 추가 설명이나 질문이 필요하면 알려주세요.

답변

1

삽입 광고를 제시 할 때 IBAction에서 개수를 지우는 것이 하나의 해결책이며, 삽입 광고가 사라지면 IBOutlets를 가지고있는 경우 발신자로 누른 버튼으로 servicesButton 함수를 호출 할 수 있습니다.

func interstitialDidDismissScreen(ad: GADInterstitial!) { 
    self.servicesButton(buttonThatWasPressed) 
} 

이렇게하면 논리가 모두 리콜됩니다.

또 다른 방법은 새 뷰 제목에 대한 클래스 수준 변수를 설정하고 버튼을 누르면 presentSegue를 호출하는 위치와 관계없이 prepareForSegue에서 새 제목 될거야.

+0

도움을 주셔서 감사합니다. 나는 버튼에 조금 붙어있어. 눌러 놨어. 이 정보를 interstitialDidDismissScreen 메소드에 어떻게 전달할 수 있습니까? – Joe

+0

버튼이 코드 또는 IBOutlet 인 경우 보낸 사람 인수로 전달한 버튼이 – pbush25

+0

위의 원래 게시물에서 언급하지 않은 한 가지 : 모든 touchUpInside 이벤트에 연결된 4 개의 버튼이 있습니다 (예 : servicesButton). 나는 스토리 보드에서 이것을했다. 그럼 각 태그를 설정합니다. 4 개의 버튼 모두 같은 로직을 호출하기 때문에 조금 더 깨끗한 코드라고 생각했습니다. – Joe