我的父视图控制器有两个辅助视图控制器(CriteriaViewController和MatchCenterViewController)可以切换到。
我想要做的是,如果“eBayCategorySearch”云代码函数返回值“1”,则将其置于MatchCenter,如果返回值“0”,则置于CriteriaView。
我试图设置一些可以做到这一点,但它没有正常运行。我怎样才能以编程方式设置这个segue?
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if (sender != self.nextButton) return;
if (self.itemSearch.text.length > 0) {
[PFCloud callFunctionInBackground:@"eBayCategorySearch"
withParameters:@{@"item": self.itemSearch.text}
block:^(NSString *result, NSError *error) {
if (!error) {
NSLog(@"The result is '%@'", result);
if ([result intValue] == 1) {
[self presentModalViewController:MatchCenterViewController
animated:YES];
}
else {
[self presentModalViewController:CriteriaViewController
animated:YES];
}
}
}];
}
}
答案 0 :(得分:1)
如第一条评论中所述,您不应在prepareForSegue
中确定一个segue,因为它已在那里确定。
您可以为nextButton创建IBAction
并确定其中的segue
- (IBAction)nextButtonTapped:(id)sender
{
if (self.itemSearch.text.length > 0) {
[PFCloud callFunctionInBackground:@"eBayCategorySearch"
withParameters:@{@"item": self.itemSearch.text}
block:^(NSString *result, NSError *error) {
if (!error) {
NSLog(@"The result is '%@'", result);
if ([result intValue] == 1) {
[self performSegueWithIdentifier:@"ShowMatchCenterSegue" sender:self];
} else {
[self performSegueWithIdentifier:@"ShowCriteriaSegue" sender:self];
}
}
}];
}
}
现在您应该使用此操作连接下一个按钮,并在IB中为您的segue设置标识符。
此外,您可以使用prepareForSegue
在视图控制器之间传输数据
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"ShowMatchCenterSegue"]) {
MYMatchCenterViewController *matchCenterViewController = [segue destinationViewController];
matchCenterViewController.data = self.someData;
} else {
...
}
}