我真的很喜欢编码,所以如果这很愚蠢请温柔:P。
我试图通过快速编码实现的是拥有2个视图控制器,可以根据发送segue传递数据。
VC1设置有2个标签和2个按钮。标签1是玩家1的名字,标签2是玩家2的名字。按钮1是从VC2中的全局名称列表中选择播放器1,而按钮2对于播放器2是相同的
VC2有一个选择器视图设置,其中包含一个名称列表和一个“选择”在pickerView中选择的名称的按钮。
我知道如何设置所有按钮,选择器和标签,甚至如何使用prepareForSegue发回数据,但是我不知道怎么做是告诉VC2“选择”按钮发送它to playerOneSegue或playerTwoSegue基于VC1中选择的按钮。
任何帮助将不胜感激,我很抱歉,如果这是愚蠢的,但我已经卡住了一段时间,并没有找到任何在线帮助。我甚至不确定这是不是我应该这样做的方式。我有一半想要为每个按钮设置一个警报,甚至没有跳到另一个VC,但另一部分想知道如何做到这一点,因为我确定必须有一种方法大声笑。
答案 0 :(得分:7)
如果您有两个相同VC的segue,您可以为每个segue提供唯一标识符,并根据标识符区分发件人。 设置按钮的标签(例如1表示button1和2表单button2)
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
}
我希望这就是你想要实现的目标
答案 1 :(得分:0)
不太确定你在问什么。但听起来你想要将数据从vc1发送到vc2然后决定在vc2中运行哪个segue。
我会做什么:在vc1 prepareForSegue中,我会在vc2中设置一个属性,该属性根据vc1中的按钮说明了如何处理vc2中的结果。
在你的prepareForSegue中:
if segue.identifier == "MyVc2Segue" {
let yourNextViewController = (segue.destinationViewController as CommentViewController)
// Set variable
yourNextViewController.myVar = somethingVar
}
然后在你的vc2中我会使用一个插座而不是依赖于segues,并且在插座中根据上面提到的变量采取一个立场/决定你应该执行哪个segue。