检测从上一个视图控制器单击哪个按钮

时间:2014-11-16 13:19:09

标签: ios objective-c iphone segue

我有两个视图控制器“SortViewController”和“CatalogeViewController”。 我有“SortViewController”6按钮,它与push segue连接到“CatalogeViewController” 我怎么知道用户来自哪一个按钮? 我为segue设置了一个标识符,我已经考虑过准备segue并将字符串变量发送到“CatalogeViewController”,同时用户按下按钮并检查它是否与“CatalogeViewController”上的字符串相同。 还有另一种方法吗? 并请一些人可以解释我如何根据我的问题为字符串变量做segue preapre。 感谢

2 个答案:

答案 0 :(得分:2)

Bouabane的回答是可行的,但是需要为每个按钮创建一个不同的segue,这是最初的工作,更难以维护,并且使你的故事板与大量的segue连接混乱。

由于您的所有按钮都链接到同一目的地,我会采用不同的方式。

通过控制从第一个VC(ViewController)拖动到第二个VC来手动创建一个segue。给它一个唯一的标识符,如“ButtonSegue”

然后为所有按钮创建一个IBAction。将所有按钮链接到同一操作。

为每个按钮指定唯一的标签号。使用连续的数字范围(例如101,102 ... 106)。

在IBAction方法中,将按钮的标签号保存为实例变量。

在prepareForSegue中,将标记号实例变量传递给目标VC。 (匹配数字的代码比匹配字符串的代码更快更简单。使用数字可以使用switch语句。)

为了使代码更清晰,更容易阅读,我将使用可能的标记值定义typedef'dum,然后使源视图控制器的标记号实例变量和目标视图控制器的标记号属性使用该类型。 / p>

答案 1 :(得分:0)

您应该使用此方法。

  

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

这是一个如何满足您需求的示例:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

 CatalogeViewController *catalogeViewController = segue.destinationViewController;;
if([segue.identifier isEqualToString:@"firtsSegue"])
{
   catalogeViewController.selectedButton = @"firstButton";
}else if([segue.identifier isEqualToString:@"secondSegue"]){
   catalogeViewController.selectedButton = @"secondButton";
}else
 .
 .
 .
}