viewholderまたはnibファイルに関連付けられていないビューコントローラは、クラスの)デフォルトのinitiazerはView Controllerのインスタンスを提供します。
これを試してみてください:
は、Objective-Cの
ViewController *viewController = [[ViewController alloc] init];
[self.navigationController pushViewController:viewController animated:true];
スウィフト
let viewController = ViewController()
navigationController?.pushViewController(viewController, animated: true)
更新
文字列クラス名をView Controllerに変換するには、次の拡張を試してください。今
extension NSObject {
func viewControllerFromString(viewControllerName: String) -> UIViewController? {
if let appName = Bundle.main.infoDictionary?["CFBundleName"] as? String {
print("CFBundleName - \(appName)")
if let viewControllerType = NSClassFromString("\(appName).\(viewControllerName)") as? UIViewController.Type {
return viewControllerType.init()
}
}
return nil
}
}
、
if let viewController = viewControllerFromString(viewControllerName: "ViewController") as? ViewController {
navigationController?.pushViewController(viewController, animated: true)
}
同様の機能文字列の拡張子を持つクラス文字列から、あなたのビューコントローラを取得:
extension String {
func getViewController() -> UIViewController? {
if let appName = Bundle.main.infoDictionary?["CFBundleName"] as? String {
print("CFBundleName - \(appName)")
if let viewControllerType = NSClassFromString("\(appName).\(self)") as? UIViewController.Type {
return viewControllerType.init()
}
}
return nil
}
}
if let viewController = "ViewController".getViewController() as? ViewController {
navigationController?.pushViewController(viewController, animated: true)
}
あなたはストーリーボードビューコントローラ設計のための(ないセグエ接続)を持っていませんか? – Krunal
いいえ、そのすべてのプログラム – jackdm
"私はVCを参照することができます"そしてどうやってそれを初期化するのですか?あなたはstoryboardIDを使う必要はありません。あなたは 'MyVCForPush * vc = [[MyVCForPush alloc] init]'を実行することができます。 'MyVCForPush * vc = [[MyVCForPush alloc] initWithXibName:@someName]'、そして '[vc setPushInfo:myPushInfo]'を入力し、それを提示します。 – Larme