Ios 添加PerformsgueWithIdentifier()调用后,将创建两个不同的分段
单击按钮时,我正在使用performsguewithidentifier(),以便将正确的信息传递给下一个ViewController。当我单击该按钮时,它将转到一个新的视图空白视图,然后使用performsguewithidentifier()调用提供的信息打开我想要的视图。这需要用户点击后退按钮2次才能返回主视图 由于我使用的是PerformsgueWithIdentifier(),是否有办法确保不会自动调用PrepareForsgue()?我有一种感觉,这是因为我使用performsguewithidentifier()调用调用prepareforsgue(),然后它会被第二次自动调用 以下是我使用performsguewithidentifier()方法的代码: 以下是我的prepareForSegue()方法:Ios 添加PerformsgueWithIdentifier()调用后,将创建两个不同的分段,ios,objective-c,xcode,segue,Ios,Objective C,Xcode,Segue,单击按钮时,我正在使用performsguewithidentifier(),以便将正确的信息传递给下一个ViewController。当我单击该按钮时,它将转到一个新的视图空白视图,然后使用performsguewithidentifier()调用提供的信息打开我想要的视图。这需要用户点击后退按钮2次才能返回主视图 由于我使用的是PerformsgueWithIdentifier(),是否有办法确保不会自动调用PrepareForsgue()?我有一种感觉,这是因为我使用performsgue
你在采取什么行动?您的performSegueWithIdentifier方法不应该调用自身,这就是为什么您会得到两个返回按钮。你在故事板上也有这样的连接吗?如果在情节提要中设置了分段,那么您甚至可能根本不需要performsguewithidentifier调用,然后您只需为每个分段做好准备 您应该尝试使用一些循环来完成所有代码,这只是一个改进代码的建议:)@LinusG。好的,谢谢,但是这个问题呢?不知道我的故事板上也有这样的设置,但我想我应该这样做。我控制将按钮拖到下一个视图控制器,以便它显示下一个视图控制器,我将该segue命名为“time1”,然后在代码中实现performsguewithidentifier。我确实需要使用这个方法调用。难道我不应该在我的故事板上设置它吗?如果是这样的话,我怎么给这个序列一个标识符呢?这取决于你把它连接到哪里…这些是在按钮上,单元格上,什么?如果在视图控制器之间单击控件,则需要调用perform。若您控制从按钮点击到视图控制器,那个么您不需要调用perform。我希望这些是按钮。我单击了视图控制器的按钮,但之前的问题是我需要调用perform以确保下一个视图控制器接收到正确的字符串。正如您在我的prepare中所看到的,我将向下一个视图控制器提供一个NSAttributedString。此字符串因单击的按钮而异。这就是为什么我调用perform以便使用正确的字符串。prepare调用正在设置这些字符串,而不是perform,对吗?prepare正在设置将第二个视图控制器中的字符串初始化为第一个视图控制器中已设置的字符串。perform是根据按下的按钮调用prepare。
if (page == 1)
[self performSegueWithIdentifier:@"time1" sender:self];
else if (page == 2
[self performSegueWithIdentifier:@"time2" sender:self];
else if (page == 3)
[self performSegueWithIdentifier:@"time3" sender:self];
else if (page == 4)
[self performSegueWithIdentifier:@"time4" sender:self];
else if (page == 5)
[self performSegueWithIdentifier:@"time5" sender:self];
else if (page == 6)
[self performSegueWithIdentifier:@"time6" sender:self];
else if (page == 7)
[self performSegueWithIdentifier:@"time7" sender:self];
else if (page == 8)
[self performSegueWithIdentifier:@"time8" sender:self];
else if (page == 9)
[self performSegueWithIdentifier:@"time9" sender:self];
else if (page == 10)
[self performSegueWithIdentifier:@"time10" sender:self];
else if (page == 11)
[self performSegueWithIdentifier:@"time11" sender:self];
else if (page == 12)
[self performSegueWithIdentifier:@"time12" sender:self];
else if (page == 13)
[self performSegueWithIdentifier:@"time13" sender:self];
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"time1"] ||
[segue.identifier isEqualToString:@"time2"] ||
[segue.identifier isEqualToString:@"time3"] ||
[segue.identifier isEqualToString:@"time4"] ||
[segue.identifier isEqualToString:@"time5"] ||
[segue.identifier isEqualToString:@"time6"] ||
[segue.identifier isEqualToString:@"time7"] ||
[segue.identifier isEqualToString:@"time8"] ||
[segue.identifier isEqualToString:@"time9"] ||
[segue.identifier isEqualToString:@"time10"] ||
[segue.identifier isEqualToString:@"time11"] ||
[segue.identifier isEqualToString:@"time12"] ||
[segue.identifier isEqualToString:@"time13"])
{
InfoViewController *ivc = [segue destinationViewController];
if (_stringText != nil)
ivc.viewText = _stringText;
}//end if
}//end prepareForSegue