如何让一个按钮修改另一个按钮的功能

How to make a button modify another button functions

我有两个UIViewController。在第一个中,我有一个按钮可以添加一些视图,一次一个,到主视图。在第二个中,我设置了一个商店,这样当我按下一个按钮时,我就可以解锁我应用程序的一些功能。现在,我完全知道(我希望)如何处理让 VC 通信并触发其他一些简单功能的部分,我不知道如何让商店按钮增加按钮的功能。

我需要什么:
现在该按钮最多可添加 10 个视图(完整版)。我希望在用户购买我的应用程序之前,他最多可以添加 3 个视图,然后,当他购买它时,我已经拥有的功能(添加 10 个视图的那个)开始工作并取代另一个。

主视图控制器

var messageArray = [UIView] ()

我从情节提要中附加了我所有的 UIView,然后将它们附加到 viewDid 加载中的数组,如下所示:messageArray.append(View1)

@IBAction func addMessageViewButton(_ sender: Any) { 
    let hiddenViews = messageArray.filter { [=11=].isHidden }
    guard !hiddenViews.isEmpty else {

        let sheet = UIAlertController(title: "max reached", message: nil, preferredStyle: .actionSheet)
        let ok = UIAlertAction(title: "OK", style: .cancel, handler: nil)

        let closeAll = UIAlertAction(title: "Close all", style: .destructive) { (addMessage) in

      view1.isHidden = true
      view2.isHidden = true
      view3.isHidden = true
      view4.isHidden = true
      view5.isHidden = true
      view6.isHidden = true
      view7.isHidden = true
      view8.isHidden = true
      view9.isHidden = true
      view10.isHidden = true
    }
            sheet.addAction(ok)
            sheet.addAction(closeAll)

            present(sheet, animated: true, completion: nil)

            return

}
        let randomHiddenView = hiddenViews.randomElement()
        randomHiddenView?.isHidden = false
    }

商店视图控制器

这里我不会 post 所有的代码,因为它太多了,当然也没有必要,因为这里重要的是要知道有一个按钮,如果用户按下它,他继续购买,他将得到我在这里 post 编辑的功能,而不是让他只有 3 个视图的功能。

func unlock() {

        let appdelegate = UIApplication.shared.delegate
            as! AppDelegate
        appdelegate.viewController!.functionToHave10Views()
//viewControlled is declared in the app delegate like this ` var viewController: ViewController?`
//I know I don't physically have `functionToHave10Views()`, but I guess I'll turn the code of my button into a function, so just to be clear, I'm referring to that function.


    buyButton.isEnabled = false

}

在您的主视图控制器中:

var isLocked = true

@IBAction func addMessageViewButton(_ sender: Any) {
  if isLocked {
    // Do something for when is locked
  } else {
    // Do something for when is unlocked
  }
}

然后在您的商店视图控制器中:

func unlock() {
    let appdelegate = UIApplication.shared.delegate as! AppDelegate
    appdelegate.viewController!.isLocked = false
    buyButton.isEnabled = false
}