多个按钮使用唯一标识符转换到相同的视图控制器

时间:2013-12-04 00:28:20

标签: ios xcode uibutton uistoryboardsegue ibaction

我有一个ViewControllerA,在我的情况下它有大约15个按钮,它们代表级别,当按下一个级别时它会转移到ViewControllerB。现在手动ctrl +拖动并为每个按钮创建segue是没有意义的。我想知道一个按钮如何切换到ViewControllerB并且有一个唯一的标识符,然后将一个对象传递给ViewControllerB,以识别用户按下哪个级别。我还想指出我有一个推视控制器。 到目前为止,我失败的尝试之一是按住Ctrl键并拖动所有按钮并创建一个名为的方法:(在我的情况下按钮标题是级别编号)

- (IBAction)buttonPressed:(UIButton *)sender {
    [self performSegueWithIdentifier:[sender currentTitle] sender:self];  
}

之后我调用了prepareForSegue:segue sender:sender方法。老实说我是iOS开发的新手。任何有用的教程或文章对我来说都很棒。 提前感谢所有帮助者。

2 个答案:

答案 0 :(得分:9)

你接近失败的尝试。您只需要在IB中直接从控制器到VCB设置的单个segue的一个标识符。在你的action方法中,调用所有按钮,执行此操作(注意我在sender参数中传递了按钮):

- (IBAction)buttonPressed:(UIButton *)sender {
    [self performSegueWithIdentifier:@"MySegueIdentifier" sender:sender];  
}

然后在prepareForSegue中,您可以使用sender参数获取按钮的标题:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(UIButton *)sender {
        NSString *title = sender.currentTitle;
        // do what you need with the title
}

答案 1 :(得分:3)

  1. ViewControllerA上创建私有属性(可能使用枚举)以记录选择的级别。
  2. - (IBAction)buttonPressed:(UIButton *)sender方法中,您需要确定按下了哪个按钮,并使用该信息设置属性。然后致电[self performSegueWithIdentifier:@"nameOfStoryboardSegue" sender:self];
  3. ViewControllerB上创建一个公共属性,以跟踪选择的级别。
  4. 覆盖prepareForSegue:segue sender:sender方法。将目标视图控制器实例化为ViewControllerB,并在B上设置属性以匹配来自A的选定属性。
  5. 执行segue。
  6. question & answer将帮助您在prepareForSegue方法中的视图之间传递数据,而此question & answers可能有助于处理单IBAction方法中的所有按钮。