检测按下哪个按钮来打开此视图[重复]

Posted

技术标签:

【中文标题】检测按下哪个按钮来打开此视图[重复]【英文标题】:Detect which button was pressed to open this view [duplicate] 【发布时间】:2013-01-26 21:51:34 【问题描述】:

可能重复:Passing variables between view controllers

假设我在同一个 ViewController(FirstController) 中有 3 个按钮,标签为 1-3。所有三个按钮都打开了一个新的ViewController(SecondController)。但是我如何才能在SecondController 中检查按下了什么按钮才能到达这里,或者使用了什么segue?因此SecondController 可以根据按下哪个按钮打开它来执行不同的操作。我可能在考虑开关和外壳。

【问题讨论】:

如何将点击的按钮标签存储在共享变量中或使用通知? 我今天早些时候回答了您的类似问题,并向您展示了如何做到这一点。你不明白吗? 【参考方案1】:

有两种可能的方法。

一种方法是为每个按钮分配一个唯一的转场。在prepareForSegue: 方法上,您识别按钮并将该信息提供给destinationViewController

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

    if ([segue.identifier isEqualToString:@"Button1Segue"]) 
        [segue.destinationViewController setButton:1];
    

    if ([segue.identifier isEqualToString:@"Button2Segue"]) 
    ...


另一种方法是创建一个 property 来存储最后按下的按钮。

- (IBAction)buttonTap:(id)sender 

    self.lastPressedButton = sender.tag;

prepareForSegue: 你会这样做:

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

    if ([segue.identifier isEqualToString:@"SecondControllerSegue"]) 
        [segue.destinationViewController setButton: self.lastPressedButton];
    

希望对你有帮助

【讨论】:

【参考方案2】:
if (button.tag == 0) 
   NSLog(@"Button one.");
 else if (button.tag == 1) 
   NSLog(@"Button two.");

您可以在三个按钮操作之前发生的方法中添加这样的内容。可能是 viewWillDisappear、prepareForSegue 等。

祝你好运!

【讨论】:

以上是关于检测按下哪个按钮来打开此视图[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何检测何时按下 Enter 或按下提交 [重复]

滚动视图,如导航控制器的过渡[重复]

确定按钮阵列中的最后一次按下[重复]

如何使表格视图单元格中的按钮工作[重复]

在 UITableView 编辑模式下更改删除按钮标题 [重复]

表视图按下,如何“放开”按钮?