【问题标题】:Would like to clarify if it is the view did load error or is it the code problem?想澄清一下是视图加载错误还是代码问题?
【发布时间】:2019-06-17 23:01:55
【问题描述】:

很乐意协助澄清细节。我尝试通过 segue 输入应用内购买视图控制器并通过用户默认值将其关闭,但控制器不存在并且崩溃表明视图确实加载错误。因此,想澄清一下是视图加载错误还是代码问题?

override func viewDidLoad() {
    super.viewDidLoad()

    SKPaymentQueue.default().add(self)
    if isPurchased() {
        showDetails()
    }
}

override func prepare (for segue: UIStoryboardSegue, sender: Any?) {

     if segue.identifier == "subscribepage1" {
           buyPremium()
     } else if segue.identifier == "subscribepage2" {
            buyPremium()
     }
}

func isPurchased() -> Bool {
    let purchaseStatus = UserDefaults.standard.bool(forKey: productID)
    if purchaseStatus {
        print("Previously purchased")
        return true
    } else { print("Never purchased")
        return false
    }
}

func showDetails() {
    UserDefaults.standard.set(true, forKey: productID)
    performSegue(withIdentifier: "gotop1", sender: self)
    performSegue(withIdentifier: "gotop2", sender: self)
}

【问题讨论】:

  • 很难判断是复制粘贴代码出错,还是代码有误。我认为这会帮助你更一致地适当缩进你的代码。在我看来,您在第一个函数之后缺少一个右括号。给自己找一个好的 IDE,它会让你的生活变得更轻松。

标签: ios uiviewcontroller in-app-purchase segue


【解决方案1】:

只有你的代码有问题,当你调用 showDetails() 方法同时执行两个 segues 时

performSegue(withIdentifier: "gotop1", sender: self)
performSegue(withIdentifier: "gotop2", sender: self)

验证/添加这两行的条件,“gotop1”或“gotop2”。

【讨论】:

  • 您好 Komara,感谢您的建议。我尝试将它们分开,但仍然无法连接或使视图控制器按我希望的方式运行。您建议对这些行进行什么验证或添加什么?
  • 我想先知道一件事,你还遇到同样的错误吗?如果不让我知道你希望如何工作。
  • 我希望使用 segue(在应用程序中购买)显示视图控制器,然后关闭该视图(同时添加用户默认值)。问题似乎是在我点击按钮(signet 1 错误)后视图不会加载。感谢您的帮助 Komara :) 感激不尽
猜你喜欢
  • 2014-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-14
  • 1970-01-01
  • 1970-01-01
  • 2020-03-15
相关资源
最近更新 更多