我有一个以编程方式创建的按钮,我需要在click上执行segue,它将使用prepareForSegue发送数据,但此代码不会触发它。
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
UIViewController * vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"AddToCalendarViewController"];
[self.navigationController pushViewController:vc animated:YES];
我试过这个:
[self performSegueWithIdentifier:@"addToCalendar" sender:self];
但是由于按钮是用语法创建的,所以我没有要调用的任何segue标识符,并且使用以下内容来创建它不起作用
UIStoryboardSegue * segue = [[UIStoryboardSegue alloc] initWithIdentifier:@"addtoCalendar" source:self destination:vc];
答案 0 :(得分:2)
UIStoryboardSegue
。通过将视图控制器连接到故事板中的目标视图控制器来创建segue,并将其标识符放到@"addToCalendar"
(始终在故事板中)。然后按照你已经做的那样打电话。
答案 1 :(得分:0)
如果按下按钮时没有真实的故事板,则需要拨打addTarget:action:forControlEvents
,其中action
是target
方法的选择器被称为。
具体来说,首先需要创建一个推送目标视图控制器的方法,如下所示:
- (void)addToCalendar {
DestinationiewController * vc = [[DestinationViewController alloc] initWithNibName:@"destinationViewController" bundle:nil;
[self.navigationController pushViewController:vc animated:YES];
}
然后在源视图控制器的viewDidLoad
(或者以编程方式实例化按钮的任何地方),您需要添加
[self.button addTarget:self action:@selector(@"addToCalendar") forControlEvents: UIControlEventTouchUpInside];
将调用您在上面定义的addToCalendar
方法。