Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将显示“使用视图创建主视图计数器”_Ios_Swift - Fatal编程技术网

Ios 将显示“使用视图创建主视图计数器”

Ios 将显示“使用视图创建主视图计数器”,ios,swift,Ios,Swift,我需要创建一个主视图计数器,每当我从不同的视图返回到主视图时,它都会计数。 我已将计数器放入VIEWWILLEXPENCE方法。只要切换到使用SecondViewController实现的第二个视图,就可以正常工作 如果我想切换到第二个情节提要视图,该视图由同一个ViewController控制,则会发生错误。 隐式展开可选值时意外发现nil “显示第二个情节提要视图”按钮将连接主视图和第二个情节提要视图,该按钮仅在Main.storyboard上创建(ViewController上未编写任何代

我需要创建一个主视图计数器,每当我从不同的视图返回到主视图时,它都会计数。 我已将计数器放入VIEWWILLEXPENCE方法。只要切换到使用SecondViewController实现的第二个视图,就可以正常工作

如果我想切换到第二个情节提要视图,该视图由同一个ViewController控制,则会发生错误。 隐式展开可选值时意外发现nil

“显示第二个情节提要视图”按钮将连接主视图和第二个情节提要视图,该按钮仅在Main.storyboard上创建(ViewController上未编写任何代码)

我只编程了第二个情节提要的关闭功能

 class ViewController: UIViewController {

     let secondViewController = SecondViewController()

     var appearanceCounter = 0

     @IBOutlet weak var counterLabel: UILabel!

     override func viewDidLoad() {
         super.viewDidLoad()
         // Do any additional setup after loading the view.
     }

     override func viewWillAppear(_ animated: Bool) {
         appearanceCounter += 1

         counterLabel.text = String(appearanceCounter)
     }

     @IBAction func showSecondViewPressed(_ sender: UIButton) {
         secondViewController.modalPresentationStyle = .fullScreen
         secondViewController.modalTransitionStyle = .flipHorizontal

 //        present(secondViewController, animated: true, completion: nil)

         show(secondViewController, sender: nil)

     }

     @IBAction func backWithSequeUwindPressed(unwindSegue: UIStoryboardSegue) {

         self.modalTransitionStyle = .crossDissolve

     }
     @IBAction func backWithIBActionPressed(_ sender: UIButton) {

         self.modalTransitionStyle = .crossDissolve
         self.dismiss(animated: true, completion: nil)

     }
 }

计数器应处理这两种情况。当我从SecondView和SecondStoryboardView返回时,它应该会起作用。如何实现正确的计数器?我犯了什么错误?

这里的问题是,黄色视图和蓝色视图由同一个控制器控制

创建蓝色标签时,界面生成器负责将计数器标签链接到附带代码中的变量。 对于黄色的,没有这样的标签,因此没有任何内容链接到
counterLabel
变量,因此当运行黄色的
viewdide
时,为零。 由于IBOutlets是强制展开选项(请注意声明后的!),因此默认情况下,此访问会使应用程序崩溃

处理这种情况的正确方法是在interface builder中为对应的控制器实际使用两个不同的控制器。 另外一个选择,如果你不可能的话,将是交换
用于


希望这能有所帮助:)

我不明白您的控制器是如何链接的,哪些源于代码,哪些源于情节提要。也许在故事板上加一张图片是个好主意。@KlixxOne我添加了一个打印屏幕-我希望它能让它更清晰。谢谢你的帮助,这个错误到底发生在哪里?你能在代码中突出显示它吗?黄色和蓝色视图都由相同的视图控制器控制吗?我已经更新了图片-在那里你可以看到错误发生的地方。没错,它们都由同一个视图控制器控制。-我想这就是问题发生的原因,但我不知道如何解决它。然后接受答案,让其他人知道这个问题已经解决:-)