首页 > 解决方案 > 当我在 xcode 中切换到第二页时出现问题(swift)

问题描述

我对同时使用 swift 和 xcode 非常陌生,并且在两个视图控制器之间切换时遇到了问题(如视频所示)。每当我按下按钮进入下一个屏幕时,底部的蓝条就会出现并且它停止工作。它以前可以工作,但是在我添加了第三个和第四个视图控制器之后,它就停止了工作。我不知道问题出在哪里,所以我不确定要发送代码的哪些部分,但我可以发送任何需要的东西。

我的问题视频:https ://www.youtube.com/watch?v=nvFkltNAJkI&feature=youtu.be

这是我的第二个 ViewController 的代码(按计划时打开的那个)

import UIKit
protocol DataDelegate {
    func insertEvent(eventString: String, pos: Int)
    func insertDate(_ dateString: String, pos: Int)
    func insertImage(_ matImage: UIImage, pos: Int)
}
class SecondScreenViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, DataDelegate {

    @IBAction func back()
    {
        dismiss(animated: true, completion: nil)
    }

    @IBOutlet var tableView: UITableView!
    var dates = ["6/1/20", "6/3/20", "6/3/20"]
    var eventNames = ["event1", "event2", "event3"]
    var images = [UIImage(named: "Test"), UIImage(named: "Test"), UIImage(named: "Test")]
    var mImage = UIImage(named: "TestTree")

    override func viewDidLoad() {
        super.viewDidLoad()

        perform(#selector(advance), with: nil, afterDelay: 2)

        let nib = UINib(nibName: "FirstTableViewCell", bundle: nil)
        tableView.register(nib, forCellReuseIdentifier: "FirstTableViewCell")
        tableView.delegate = self
        tableView.dataSource = self
    }
    //DataDelegate methods
    func insertEvent(eventString: String, pos: Int)
    {
        if pos == -1
        {
            eventNames.append(eventString)
        }
        else
        {
            eventNames.insert(eventString, at: pos)
        }
    }
    func insertDate(_ dateString: String, pos: Int)
    {
        dates.insert(dateString, at: pos)
    }
    func insertImage(_ matImage: UIImage, pos: Int)
    {
        images.insert(matImage, at: pos)
    }

    @objc func advance()
    {
        let vc = NewCellViewController()
        vc.delegate = self
        present(NewCellViewController(), animated: true, completion: nil)
    }

    //TableView Funcs
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    {
        return dates.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
        let cell = tableView.dequeueReusableCell(withIdentifier: "FirstTableViewCell", for: indexPath) as! FirstTableViewCell
        //method calls to sort dates (move names with them) before displaying, in this class
        cell.myDate.text = dates[indexPath.row]
        cell.myEventName.text = eventNames[indexPath.row]
        cell.myImageView.image = images[indexPath.row]

        return cell
    }
}

我正在使用这个1 segue 来呈现视图控制器,但是直到我在底部创建视图控制器的 segue 后问题才开始出现,这很奇怪,因为我没有做任何事情来触发前两个屏幕。

标签: iosswiftxcode

解决方案


由于 iOS 13 存在问题。将您的 as 更改viewController's presentation styleFull Screen.

此外,如果您有navigation controller,则必须将您的设置navigation controller's presentation styleFull Screen

在此处输入图像描述

希望能帮助到你...


推荐阅读