多个 segues 到同一个视图控制器
multiple segues to the same view controller
我真的是编码新手,所以如果这很愚蠢,请温和 :P。
我试图通过 swift 编码实现的是拥有 2 个视图控制器,它们可以根据发送的 segue 传递数据。
VC1 设置了 2 个标签和 2 个按钮。标签 1 是玩家 1 的名字,标签 2 是玩家 2 的名字。按钮 1 用于从 VC2 中的全局名称列表中选择玩家 1,按钮 2 与玩家 2
相同
VC2 有一个选择器视图,其中设置了一个名称列表和一个按钮,用于"choose" 在选择器视图中选择的名称。
我知道如何设置所有按钮、选择器和标签,甚至知道如何使用 prepareForSegue 发回数据,但是我不知道如何告诉 VC2 "choose" 按钮根据在 VC1 中选择的按钮将其发送到 playerOneSegue 或 playerTwoSegue。
任何帮助将不胜感激,如果这很愚蠢,我再次感到抱歉,但我已经被困了一段时间,无法在网上找到任何帮助。我什至不确定这是否是我应该这样做的方式。一半的我想为每个按钮设置一个警报,甚至不跳转到另一个 VC,但另一部分想弄清楚如何做到这一点,因为我确信一定有办法大声笑。
不太确定你在问什么。但听起来您想将数据从 vc1 发送到 vc2,然后由 vc2 决定将哪个 segue 发送到 运行 in vc2.
我会做什么:在 vc1 prepareForSegue 中,我会在 vc2 中设置一个 属性,它根据 vc1 中的按钮说明了如何处理 vc2 中的结果。
在你的 prepareForSegue 中:
if segue.identifier == "MyVc2Segue" {
let yourNextViewController = (segue.destinationViewController as CommentViewController)
// Set variable
yourNextViewController.myVar = somethingVar
}
然后在你的 vc2 中我会使用一个 outlet 而不是依赖于 segues,并且在 outlet 中根据上面提到的变量采取一个 stance/decision 你应该执行的 segue。
如果你有两个segue到同一个VC,你可以给每个segue唯一的标识符,并根据标识符区分发件人。
为按钮设置标签(比如按钮 1 为 1,按钮 2 为 2)
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if (segue.identifier == "firstIdentifier") {
var VC2 : VC2 = segue.destinationViewController as VC2
VC2.buttonTag = sender.tag
}
if (segue.identifier == "secondIdentifier") {
var VC2 : VC2 = segue.destinationViewController as VC2
VC2.buttonTag = sender.tag
}
}
在VC2中声明一个变量buttonTag
var buttonTag = 0
无论您在 VC2 中执行 segue,只需检查 buttonTag
的值
if buttonTag == 1 {
//segue caused by button1 of VC1
}
else
if buttonTag == 2 {
//segue caused by button2 of VC1
}
else {
//segue caused by something else
}
我希望这就是您要实现的目标
我真的是编码新手,所以如果这很愚蠢,请温和 :P。
我试图通过 swift 编码实现的是拥有 2 个视图控制器,它们可以根据发送的 segue 传递数据。
VC1 设置了 2 个标签和 2 个按钮。标签 1 是玩家 1 的名字,标签 2 是玩家 2 的名字。按钮 1 用于从 VC2 中的全局名称列表中选择玩家 1,按钮 2 与玩家 2
相同VC2 有一个选择器视图,其中设置了一个名称列表和一个按钮,用于"choose" 在选择器视图中选择的名称。
我知道如何设置所有按钮、选择器和标签,甚至知道如何使用 prepareForSegue 发回数据,但是我不知道如何告诉 VC2 "choose" 按钮根据在 VC1 中选择的按钮将其发送到 playerOneSegue 或 playerTwoSegue。
任何帮助将不胜感激,如果这很愚蠢,我再次感到抱歉,但我已经被困了一段时间,无法在网上找到任何帮助。我什至不确定这是否是我应该这样做的方式。一半的我想为每个按钮设置一个警报,甚至不跳转到另一个 VC,但另一部分想弄清楚如何做到这一点,因为我确信一定有办法大声笑。
不太确定你在问什么。但听起来您想将数据从 vc1 发送到 vc2,然后由 vc2 决定将哪个 segue 发送到 运行 in vc2.
我会做什么:在 vc1 prepareForSegue 中,我会在 vc2 中设置一个 属性,它根据 vc1 中的按钮说明了如何处理 vc2 中的结果。
在你的 prepareForSegue 中:
if segue.identifier == "MyVc2Segue" {
let yourNextViewController = (segue.destinationViewController as CommentViewController)
// Set variable
yourNextViewController.myVar = somethingVar
}
然后在你的 vc2 中我会使用一个 outlet 而不是依赖于 segues,并且在 outlet 中根据上面提到的变量采取一个 stance/decision 你应该执行的 segue。
如果你有两个segue到同一个VC,你可以给每个segue唯一的标识符,并根据标识符区分发件人。 为按钮设置标签(比如按钮 1 为 1,按钮 2 为 2)
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if (segue.identifier == "firstIdentifier") {
var VC2 : VC2 = segue.destinationViewController as VC2
VC2.buttonTag = sender.tag
}
if (segue.identifier == "secondIdentifier") {
var VC2 : VC2 = segue.destinationViewController as VC2
VC2.buttonTag = sender.tag
}
}
在VC2中声明一个变量buttonTag
var buttonTag = 0
无论您在 VC2 中执行 segue,只需检查 buttonTag
的值if buttonTag == 1 {
//segue caused by button1 of VC1
}
else
if buttonTag == 2 {
//segue caused by button2 of VC1
}
else {
//segue caused by something else
}
我希望这就是您要实现的目标