2016-09-11 1 views
3

Я смотрел этот учебник youtube, и я добавил кнопку в всплывающем окне. Кнопка добавляет монеты (IAP), но проблема в том, что когда я отклоняю всплывающее окно, оно не будет обновлять вид, чтобы увидеть монеты обновления. Если я нажму кнопку, а затем придет снова, она будет обновлена.Обновить представление после всплывающего окна отклонено в swift

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

здесь popupVC

import UIKit 

class PopUpViewController: UIViewController { 

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.view.backgroundColor = UIColor.blackColor().colorWithAlphaComponent(0.8) 

    self.showAnimate() 

    // Do any additional setup after loading the view. 
} 

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

@IBAction func closePopUp(sender: AnyObject) { 
    self.removeAnimate() 
    //HERE SHOULD BE CODE TO RELOAD PARENT VIEWCONTROLER 
} 

func showAnimate() 
{ 
    self.view.transform = CGAffineTransformMakeScale(1.3, 1.3) 
    self.view.alpha = 0.0; 
    UIView.animateWithDuration(0.25, animations: { 
     self.view.alpha = 1.0 
     self.view.transform = CGAffineTransformMakeScale(1.0, 1.0) 
    }); 
} 

func removeAnimate() 
{ 
    UIView.animateWithDuration(0.25, animations: { 
     self.view.transform = CGAffineTransformMakeScale(1.3, 1.3) 
     self.view.alpha = 0.0; 
     }, completion:{(finished : Bool) in 
      if (finished) 
      { 
       self.view.removeFromSuperview() 
      } 
    }); 



@IBAction func btnAddCoins(sender: UIButton) { 


    for product in list { 
     let prodID = product.productIdentifier 
     if(prodID == "XXXX") { 
      p = product 
      buyProduct() 
      break; 
     } 
    } 
} 
} 

Я не скопировать весь код IAP.

enter image description here

ответ

0

Самый простой способ сделать это было бы использовать делегат справиться с этим. Идея заключалась бы в том, что когда вы создали свой PopUpViewController, вы назначите ему делегат. Это означает, что родительский VC соответствует делегату.

Примером может быть делегат. Обратите внимание, что было бы целесообразно поддерживать средства для обработки успеха, отказа и отмены.

Ничего из этого кода не проверяется на компиляцию и только для справки.

protocol IAPDelegate { 
    func purchaseSuccessful() 
    func purchaseCancelled() 
    func purchaseFailed() 
} 

Ваш класс изменится на нечто подобное. Я опускаю кучу кода. Вам также необходимо выяснить, где обращаться с purchaseCancelled и purchaseFailed. Кроме того, вы можете указать дополнительную информацию (например, аргументы) на вызовы, но я оставляю это для вас, чтобы понять.

class PopUpViewController: UIViewController { 
    weak var iapDelegate : IAPDelegate? 

    // Your other code here 
    @IBAction func closePopUp(sender: AnyObject) { 
     self.removeAnimate() 
     iapDelegate?.purchaseSuccessful() 
    } 
} 

Ваш родитель VC, который я называю здесь ParentViewController будет что-то вроде

class ParentViewController: UIViewController, IAPDelegate 

BTW, Вы должны думать о лучшем класса имен. Если PopUpViewController - это действительно ваша покупка IAP VC, тогда назовите ее как таковой. Что произойдет, если вам нужен другой контроллер всплывающих окон? Что ты на это назовешь?

Смежные вопросы