gpt4 book ai didi

Swift prepareForSegue 到许多自定义 ViewController 之一

转载 作者:搜寻专家 更新时间:2023-11-01 05:36:52 25 4
gpt4 key购买 nike

我有一个 BaseViewController 使用带有标识符的 segues 连接到 3 个不同的自定义 ViewController。 BaseViewController 有一个 tableview,并且基于 tableviewCell 中的数据,BaseViewController 决定将哪个 segue 带到 3 个自定义 DestinationViewController 之一。

我还需要将一些数据传递给 DestinationViewController。

我正在尝试使用 prepareForSegue 或 performSegueWithIdentifier。

  1. prepareForSegue 允许我使用 UIStoryboardSegue 设置目标 View Controller 并向其传递数据。但是,它不允许我指定我想调用的 segue 标识符。案例 0 和案例 1 使用两个不同的 ViewController。

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    switch testVar{

    case 0:
    let svc = segue.destinationViewController as! CustomTableViewController1
    svc.name = myName
    break;

    case 1:
    let svc = segue.destinationViewController as! CustomTableViewController2
    svc.name = myName1

    break;

    default:
    break
    }
    }
  2. performSegueWithIdentifier 允许我指定 segue 标识符,但它不允许我指定我想调用的 3 个自定义 DestinationViewController 中的哪一个,也没有给我传递我需要的数据的好方法通过。

    func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? {

    switch testVar {

    case 0:
    performSegueWithIdentifier("destination1", sender:self )
    break;

    case 1: //Submitted
    performSegueWithIdentifier("destination1", sender: self)
    break;

    default:
    break
    }

    return indexPath
    }

你们能提出任何解决方案吗?提前致谢!

最佳答案

你必须同时使用 performSegue 和 prepareforsegue

func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? {

switch testVar {
case 0:
performSegueWithIdentifier("destination1", sender:self )
break;
case 1: //Submitted
performSegueWithIdentifier("destination1", sender: self)
break;
default:
break
}
return indexPath
}

并且在您的 prepareForSegue 中实现如下:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "destination1" {
if let svc = segue.destinationViewController as? CustomTableViewController1 {
svc.name = myName
}
} else if segue.identifier == "destination2" {
if let svc = segue.destinationViewController as? CustomTableViewController2 {
svc.name = myName1
}
}
}

如果需要,也可以使用 didSelectRow 而不是 willSelectRow

关于Swift prepareForSegue 到许多自定义 ViewController 之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36521116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com