点击按钮后,我希望用户导航到另一个视图。以下代码工作正常。但是,我想将一些值传递给下一个屏幕。我怎么想这样做?
- (IBAction)buttonClick:(id)sender {
[self performSegueWithIdentifier:@"segueviewc" sender:self];
}
我也尝试了以下代码并且它可以工作,但页面导航两次到MyV
viewcontroller。来自buttonClick
事件和prepareForSegue
方法。我该如何防止这种情况?
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
MyV *myv = (MyV*) segue.destinationViewController;
myv.navigationItem.title=@"Hey";
myv.arr=data;
}
答案 0 :(得分:0)
您不必在点击按钮时执行segue。如果您的按钮正在触发segue,它将自动执行。
删除行 -
[self performSegueWithIdentifier:@"segueviewc" sender:self];
来自您的方法 -
- (IBAction)buttonClick:(id)sender {
您还必须理想地检查正在执行的segue,以便您可以根据正在执行的导航进行编码...
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.idenifier isEqualToString:@"segueviewc"])
{
MyV *myv = (MyV*) segue.destinationViewController;
myv.navigationItem.title=@"Hey";
myv.arr=data;
}
}
答案 1 :(得分:0)
打开故事板检查segue是否从按钮直接连接到下一个视图。如果是,您只需删除该行。
[self performSegueWithIdentifier:@"segueviewc" sender:self];
我认为问题是,segue从按钮动作直接连接到下一个视图,在按钮动作中,你再次调用segue! 欢呼声
答案 2 :(得分:0)
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"segueviewc"]) {
MyV *myv = (MyV*)[self.storyboard instantiateViewControllerWithIdentifier:@"yourStoryboardID"];
myv.navigationItem.title=@"Hey";
myv.arr=data;
}
}
你不需要IBAction方法。
答案 3 :(得分:0)
有两种触发segue的方法: 1.您可以将其从按钮直接触发到新视图控制器 2.从一个视图控制器触发segue到第二个视图控制器。
我猜你是通过第一种方法连接它。因此,您不应该从IBAction触发它。