gpt4 book ai didi

ios - 尝试在单击按钮但不触发方法时显示 ViewController 时出错

转载 作者:行者123 更新时间:2023-11-29 11:42:03 24 4
gpt4 key购买 nike

我有一个 StartViewController,其中一个 segue 设置为 FinishViewController

StartViewController 有一个按钮和一个计时器。如果计时器用完,它会调用方法 finish。但是用户可以点击停止按钮移动到FinishViewController;

如果用户单击按钮停止FinishViewController 将被加载。

如果计时器调用finish 方法我得到错误:

Warning: Attempt to present < FinishViewController: 0x7c15a1d0> on < StartViewController: 0x7c252d20> whose view is not in the window hierarchy!

我不明白为什么。代码完全相同。

这是代码。

- (IBAction)stop:(id)sender {
[timer invalidate];
timer = nil;

[self performSegueWithIdentifier:@"segue_finished" sender:self];
}

- (void) finish {

[timer invalidate];
timer = nil;

[self performSegueWithIdentifier:@"segue_finished" sender:self];
}

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSLog(@"prepareForSegue %@", [segue identifier]);

if ([[segue identifier] isEqualToString:@"segue_finished"]) {
NSLog(@"segue to finished. ");
FinishViewController * fvc = (FinishViewController*)segue.destinationViewController;

}

}

有什么帮助吗?

最佳答案

你在哪里添加你的计时器?你应该在 StartViewController 中的 viewDidAppear 中添加它,并在 viewWillDissapear 中使它无效。并且不要忘记在主线程中运行 performSegue:

dispatch_async(dispatch_get_main_queue(), ^{
[self performSegueWithIdentifier:@"segue_finished" sender:self];
});

关于ios - 尝试在单击按钮但不触发方法时显示 ViewController 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45946090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com