日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

swift 4.2 - 根据字符串 push指定控制器

發布時間:2025/3/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 swift 4.2 - 根据字符串 push指定控制器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

倆個方法?

?

1. 創建類寫成 類方法

import UIKit /** 注釋:獲得VC* 1.字符串 和使用的控制器,直接跳轉* 2.用過字符串獲得對應VC*/ class JYGetPushVc: NSObject {/// 指定字符串VC跳轉,設置titlestatic func pushVcByVcNameAndTitle(pushVcNameStr:String, pushVcTitleStr:String? = nil, weakVc:UIViewController?){guard let namespace = Bundle.main.infoDictionary?["CFBundleExecutable"]as? String else{return debugPrint("JYGetPushVc 調用 pushVcByVcNameAndTitle, namespace不存在")}let clsName = namespace + "." + pushVcNameStrguard let cls = NSClassFromString(clsName) as? UIViewController.Type else{return debugPrint("JYGetPushVc 調用 pushVcByVcNameAndTitle, 項目中沒有控制器 === \(pushVcNameStr)")}let vc = cls.init()if let titleStr = pushVcTitleStr{vc.title = titleStr}weakVc?.navigationController?.pushViewController(vc, animated: true)}/// 根據字符串獲得對應控制器,使用的時候as, 傳遞參數static func getVc(pushVcNameStr:String) -> UIViewController?{guard let namespace = Bundle.main.infoDictionary?["CFBundleExecutable"]as? String else{debugPrint("JYGetPushVc 調用 getVc, namespace不存在")return nil}let clsName = namespace + "." + pushVcNameStrguard let cls = NSClassFromString(clsName) as? UIViewController.Type else{debugPrint("JYGetPushVc調用getVc項目中沒有 控制器 === \(pushVcNameStr)")return nil}return cls.init()} }

  

類使用

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {//這里 VC需要傳遞參數進去的var pushVc : UIViewController?if let vc = JYGetPushVc.getVc(pushVcNameStr: vcNameArr[indexPath.section][indexPath.row]) as? JYWorksShowController{vc.title = titleArr[indexPath.section][indexPath.row]pushVc = vc}//這是主頁面看需求隱藏tabbarself.hidesBottomBarWhenPushed = trueif let vc = pushVc{self.navigationController?.pushViewController(vc, animated: true)}else{//這里不需要指定控制器。設置VC的屬性的。JYGetPushVc.pushVcByVcNameAndTitle(pushVcNameStr: vcNameArr[indexPath.section][indexPath.row], pushVcTitleStr: titleArr[indexPath.section][indexPath.row], weakVc: self)}//跳轉打開,不然回到首頁 沒有tabbarself.hidesBottomBarWhenPushed = false}

  

?

?

2. 在當前控制器 寫倆方法

方法1

/// 指定字符串VC跳轉,設置titlefunc pushVcByVcNameAndTitle(vcName:String, vcTitleName:String = "", isHideBottomBar:Bool = false){if let namespace = Bundle.main.infoDictionary?["CFBundleExecutable"]as? String{let clsName = namespace + "." + vcNameif let cls = NSClassFromString(clsName) as? UIViewController.Type{let vc = cls.init()vc.title = vcTitleNameself.navigationController?.pushViewController(vc, animated: true)}}}

  

方法2

/// 根據字符串獲得對應控制器,使用的時候as, 傳遞參數func pushVcByVcNameAndTitle(vcName:String) -> UIViewController?{if let namespace = Bundle.main.infoDictionary?["CFBundleExecutable"]as? String{let clsName = namespace + "." + vcNameif let cls = NSClassFromString(clsName) as? UIViewController.Type{let vc = cls.init()return vc}}return nil}

  

3.方法使用

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {//這里 VC需要傳遞參數進去的var pushVc : UIViewController?

//具體VC 設置 vc的屬性if let vc1 = pushVcByVcNameAndTitle(vcName: vcNameArr[indexPath.section][indexPath.row]) as? JYWorksShowController{vc1.title = titleArr[indexPath.section][indexPath.row]//vc1.arr = self.dataArr//vc1.title = vcTitleArr[index.row]pushVc = vc1}//這是主頁面看需求隱藏tabbarself.hidesBottomBarWhenPushed = trueif let vc = pushVc{self.navigationController?.pushViewController(vc, animated: true)}else{//這里不需要指定控制器。設置VC的屬性的。pushVcByVcNameAndTitle(vcName: vcNameArr[indexPath.section][indexPath.row], vcTitleName: titleArr[indexPath.section][indexPath.row], isHideBottomBar: true)}//跳轉打開,不然回到首頁 沒有tabbarself.hidesBottomBarWhenPushed = false}

  

?

轉載于:https://www.cnblogs.com/qingzZ/p/10069503.html

總結

以上是生活随笔為你收集整理的swift 4.2 - 根据字符串 push指定控制器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。