InstantiateViewController(identifier:creator :)'仅在iOS 13.0或更高版本中可用

时间:2019-12-30 17:22:48

标签: ios swift xcode

我遇到此错误-InstantiateViewController(identifier:creator :)'仅在iOS 13.0或更高版本中可用

要解决此问题,我必须使用以下条件:

if #available(iOS 13.0, *) {

}

但是在没有这种情况的情况下如何解决这个问题。

我的代码:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

        let vc = storyboard?.instantiateViewController(identifier: "CartViewController") as? CartViewController
        vc?.bookNameToSend = bookName[indexPath.row]
        vc?.bookImageToSend = bookImage[indexPath.row]
        self.navigationController?.pushViewController(vc!, animated: true)
    }
}

3 个答案:

答案 0 :(得分:2)

在iOS 13中,参数名称为identifier,在iOS 13版本以下,参数名称为withIdentifier

if #available(iOS 13.0, *) {
        let vc = storyboard.instantiateViewController(identifier: "doctorProfileVC") as DrProfileViewController
        self.navigationController?.pushViewController(vc, animated: true)

    } else {
        let vc = storyboard.instantiateViewController(withIdentifier: "storyboard.instantiateViewController") as! DrProfileViewController
        self.navigationController?.pushViewController(vc, animated: true)
    }

答案 1 :(得分:0)

我认为解决该问题的唯一方法是将项目最低目标版本更改为iOS 13或避免使用该特定方法,否则必须使用if条件。

答案 2 :(得分:0)

在iOS 13中,Apple引入了这种新方法instantiateViewController(identifier:creator:),该方法会造成混乱,但是旧方法仍然存在。

因此,请改用instantiatViewController(withIdentifier:)

let vc = storyboard?.instantiateViewController(withIdentifier: "CartViewController") as? CartViewController