我有一个AController
,其中2个segues连接到BController
。
在AController
我写了这个:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "FirstSegue"{
// do something
}
if segue.identifier == "SecondSegue"{
// do something
}
}
然后来BController
,我正在寻找:
if AController.segue.identifer == "FirstSegue"{
// do something
}
if AController.segue.identifer == "SecondSegue"{
// do something
}
答案 0 :(得分:3)
在BController中获取一个bool变量
var isFromA:Bool!
在AController中:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "FirstSegue"{
let vc = segue!.destinationViewController as! BController
vc.isFromA = true
}
if segue.identifier == "SecondSegue"{
let vc = segue!.destinationViewController as! BController
vc.isFromA = false
}
}
在BController中:
if isFromA == true{
// do something
} else {
// do something
}
答案 1 :(得分:0)
与Mr.UB的答案类似,你也可以创建一个存储segue字符串值的变量:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "FirstSegue"{
let viewController = segue!.destinationViewController as! BController
viewController.sourceSegue = "FirstSegue"
}
if segue.identifier == "SecondSegue"{
let viewController = segue!.destinationViewController as! BController
viewController.sourceSegue = "SecondSegue"
}
}
所以你可以做这样的事情(在BController中),这更接近你原来的想法:
var sourceSegue: String!
if sourceSegue == "FirstSegue"{
// do something
} else if sourceSegue == "SecondSegue"{
// do something
}
答案 2 :(得分:0)
您可以做的是在View controller B中设置一个公共BOOL属性
@interface ViewControllerB
@property(nonatomic) BOOL isFirst;
@end
在准备ViewControllerA的segue时,您可以访问目标viewcontroller
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
if([[segue identifier] isEqualToString:@"FirstSegue"]){
ViewControllerB * objVC = (ViewControllerB*)[segue destinationViewController];
objVc.isFirst = TRUE;
}
if([[segue identifier] isEqualToString:@"SecondSegue"]){
ViewControllerB * objVC = (ViewControllerB*)[segue destinationViewController];
objVc.isFirst = FALSE;
}
}
然后在ViewControllerB的viewDidLoad中你可以根据属性isFirst执行不同的选项,
if(self.isFirst == TRUE){
//Perform First Segue functions
}else{
//Perform Second Segue Actions
}