【发布时间】:2020-05-07 07:24:09
【问题描述】:
就我而言,我有 UITableView 并有 查看全部 按钮,用于在单独的屏幕中列出所有项目。所以我在cellForRowAt 中添加了UIButton 操作方法的目标。现在我正在做的行动方法:
@IBAction func btnViewAllOffer(_ sender: UIButton) {
let buttonPosition = sender.convert(CGPoint.zero, to: self.tblOfferView)
let indexPath = self.tblOfferView.indexPathForRow(at: buttonPosition)
if indexPath != nil {
if let type = self.homeData[indexPath!.section].type {
if type == HomeDataType.SponserProduct.rawValue {
let vc1 = self.storyboard?.instantiateViewController(withIdentifier: "ViewController1") as! ViewController1
if let title = self.homeData[indexPath!.section].title {
vc1.title = title
}
self.navigationController?.pushViewController(vc1, animated: true)
} else if type == HomeDataType.Offer.rawValue {
let vc2 = self.storyboard?.instantiateViewController(withIdentifier: "ViewController2") as! ViewController2
if let title = self.homeData[indexPath!.section].title {
vc2.title = title
}
self.navigationController?.pushViewController(vc2, animated: true)
} else if type == HomeDataType.BestSeller.rawValue {
let vc3 = self.storyboard?.instantiateViewController(withIdentifier: "ViewController3") as! ViewController3
if let title = self.homeData[indexPath!.section].title {
vc3.title = title
}
self.navigationController?.pushViewController(vc3, animated: true)
}
}
}
}
我需要什么,有什么方法可以最小化代码并动态分配视图控制器,这样就不需要实例化每个视图控制器并每次推送它们? 比如:
var vc = UIViewController()
if let type = self.homeData[indexPath!.section].type {
if type == HomeDataType.SponserProduct.rawValue {
vc = ViewController1()
}
else if type == HomeDataType.Offer.rawValue {
vc = ViewController2()
} else if type == HomeDataType.BestSeller.rawValue {
vc = ViewController3()
}
}
self.navigationController?.pushViewController(vc, animated: true)
【问题讨论】:
-
我更新了我的答案,以便更安全地处理 vcGeneric 可能未在任何 if/else 中初始化的情况
-
@denis_lor 我正在尝试你的代码 sn-ps 但它给了我错误
-
if let vcGeneric = vcGeneric { if let title = self.homeData[indexPath!.section].title { vcGeneric.strTitle = title } self.navigationController?.pushViewController(vcGeneric, animated: true) }无法分配给属性:“vcGeneric”是一个“let”常量,无法将“SimilarViewController”类型的值转换为预期的参数类型“UIViewController” -
你能用我答案中的更新代码试试吗?
标签: ios swift navigation