我有一个ViewControllerA,在我的情况下它有大约15个按钮,它们代表级别,当按下一个级别时它会转移到ViewControllerB。现在手动ctrl +拖动并为每个按钮创建segue是没有意义的。我想知道一个按钮如何切换到ViewControllerB并且有一个唯一的标识符,然后将一个对象传递给ViewControllerB,以识别用户按下哪个级别。我还想指出我有一个推视控制器。 到目前为止,我失败的尝试之一是按住Ctrl键并拖动所有按钮并创建一个名为的方法:(在我的情况下按钮标题是级别编号)
- (IBAction)buttonPressed:(UIButton *)sender {
[self performSegueWithIdentifier:[sender currentTitle] sender:self];
}
之后我调用了prepareForSegue:segue sender:sender
方法。老实说我是iOS开发的新手。任何有用的教程或文章对我来说都很棒。
提前感谢所有帮助者。
答案 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)
ViewControllerA
上创建私有属性(可能使用枚举)以记录选择的级别。- (IBAction)buttonPressed:(UIButton *)sender
方法中,您需要确定按下了哪个按钮,并使用该信息设置属性。然后致电[self performSegueWithIdentifier:@"nameOfStoryboardSegue" sender:self];
ViewControllerB
上创建一个公共属性,以跟踪选择的级别。prepareForSegue:segue sender:sender
方法。将目标视图控制器实例化为ViewControllerB
,并在B上设置属性以匹配来自A的选定属性。此question & answer将帮助您在prepareForSegue
方法中的视图之间传递数据,而此question & answers可能有助于处理单IBAction
方法中的所有按钮。