我有一个UIViewController,可以通过两个不同的其他视图呈现。这是一个搜索表单,对两个视图的行为完全相同。
假设View1和View2可以执行呈现SearchView实例的segue。我怎么知道哪个视图提供了SearchView,以便我可以执行链接到相应操作的展开segue?
由于View1和View2都是TabView,我不想在每个中使用navigationController,因为我觉得它对于一个简单的任务来说有点过分。
在这个例子中:
View1.m
-(IBAction)didClickButton:
{
[self performSegueWithIdentifier:@"searchSegue1"];
}
View2.m
-(IBAction)didClickButton:
{
[self performSegueWithIdentifier:@"searchSegue2"];
}
SearchView.m
// Here is where I should know which segue to call
if (***ConditionToSegue1***)
[self performSegueWithIdentifier:@"unwindToSegue1"];
else if (***ConditionToSegue2***)
[self performSegueWithIdentifier:@"unwindToSegue2"];
这是什么情况?最好的方法是在prepareForSegue方法中设置SearchView的属性,告诉我发起调用的是什么视图?请记住,我不希望使用NavigationController。
祝你好运
答案 0 :(得分:3)
在SearchView.h中添加第@property (nonatomic) int tag
行。
然后在View1.m中添加以下方法:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"searchSegue1"])
[segue.destinationViewController setValue:1 forKey:@"tag"];
}
在View2.m中执行相同的操作,但将1替换为2.然后将if语句更改为:
if (self.tag == 1)
[self performSegueWithIdentifier:@"unwindToSegue1"];
else if (self.tag == 2)
[self performSegueWithIdentifier:@"unwindToSegue2"];
答案 1 :(得分:0)
首先,您应该知道您是使用故事板还是以编程方式创建故事板以进行表演。
1.If you directly connect the segue through the click button(one view controller to another view controller),you don't need to write your above coding.Just it is enough to give segue name.
click->SHOW THE ATTRIBUTES OF RIGHT SIDE UTILITY AREA.
->NOW YOU CAN SEE THE STORYBOARD SEGUE WITH-IDENTIFIER,STYLE
->IN IDENTIFIER TEXTFIELD JUST GIVE YOUR SEGUE NAME(WHATEVER YOU WANT)
(IN STYLE-PUSH IS DEFAULT IF YOU CONNECT THE SEGUE AS A PUSH)
答案 2 :(得分:0)
在您的情况下,它可能就像[self dismissViewControllerAnimated: YES completion: nil];
查看附近标题为展开赛段的博文。
http://chrisrisner.com/Unwinding-with-iOS-and-Storyboards
您可以将操作连接到故事板上的Exit
组件,该组件将为您进行展开。
-(IBAction)reset:(UIStoryboardSegue *)segue {
//do stuff
}
答案 3 :(得分:0)
我发现对此有一个简单的答案。显然,如果我在两个名为相同的视图控制器上创建一个展开动作,我也可以为它们创建一个展开segue。
如果我在SearchView上执行此segue,则会根据呈现它的人调用正确的操作。
这似乎现在有效,我不知道为什么或如何发生。如果有人能解释,我将不胜感激。
<强>更新强> 不,它没有按预期工作。尽管提供了正确的视图,但两个操作都被调用,从而导致不必要的行为。