我使用故事板并且面对这种情况:uinavigationcontroller包含一个视图控制器(根控制器),其中包含十个按钮,每个按钮通过故事板连接到同一个视图控制器。
第二个视图控制器的行为取决于在第一个视图控制器中点击的按钮,但是如何识别点击哪个按钮(如标记值)并将此信息传递给第二个视图控制器?
谢谢。
答案 0 :(得分:1)
再加上丹尼尔的回答:
首先,将一个公共属性添加到可从第一个VC访问的第二个VC:
@interface SecondViewController : UIViewController
@property (nonatomic) int buttonTagClicked;
@end
您需要在UIButtons上设置标签。这可以在故事板中完成,也可以在代码中以编程方式完成。我会创建一个每个按钮链接到的通用IBAction
。您可以稍后通过sender参数从按钮中提取标记。
- (IBAction)buttonClicked:(id)sender
{
[self performSegueWithIdentifier:@"pushSegue" sender:sender];
}
与
相关联- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"pushSegue"]) {
SecondViewController *destinationVC = (SecondViewController *)[segue destinationViewController];
UIButton *selectedButton = (UIButton *)sender;
destinationVC.buttonTagClicked = selectedButton.tag;
}
}
答案 1 :(得分:0)
您可以为每个连接设置segueIdentifier
。然后在ViewController中,您可以根据您设置的标识符触发操作。
e.g:
如果您在故事板中选择了连接,则可以将其命名为:
在ViewController中,您可以根据标识符触发操作,如下所示:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"segue1"]) {
UIViewController *destinationVC = [segue destinationViewController];
destinationVC.property = ...;
}
}