【问题标题】:Performing segue only once condition is met仅在满足条件后执行 segue
【发布时间】:2013-09-09 00:22:45
【问题描述】:

我在工作,现在手头没有代码,但稍后会发布,只是想看看我是否能在回家之前得到任何答案。

基本上,我有一个 tableViewController (view1),上面有一个按钮,可以推送到另一个 tableViewController (view2)。

view1 上的按钮检查在 view2 上填充表格所需的信息是否可用。如果是,太好了,可以执行segue;如果不是,则将数据存储在后台,然后完成转场。

这确实有效,但我遇到的问题是第二个实例,当数据之前没有保存并且按钮然后保存它时,在所有数据保存在后台之前执行 segue,所以只有表格显示一些记录。返回然后再次按下按钮即可解决此问题,因为数据有更多时间保存,因此 view2 中的表是最新的。

我想要做的是在保存所有数据之前停止 segue 的发生,或者执行 segue 并在保存每条记录时更新表,以便用户可以看到正在生成的数据。

我希望这是有道理的!

以后有需要我可以提供代码。

任何建议都会很棒。

谢谢

【问题讨论】:

    标签: objective-c xcode uitableview segue


    【解决方案1】:

    在这种情况下,您应该创建一个从第一个表视图控制器到第二个表视图控制器的 segue。然后,一旦你成功保存了你的数据,你就可以像这样执行你的 segue

    [self performSegueWithIdentifier:@"segueId" sender:self];
    

    您可以在此处找到更多详细信息:How to perform a segue that is not related to user input in iOS 5?

    【讨论】:

    • 但是我怎样才能创造条件呢?例如,我如何编写我不希望在保存完成之前发生转场的代码?
    • 既然您正在控制保存操作,您应该知道它何时完成。您的一些代码可能会有所帮助。
    【解决方案2】:
    NSBlockOperation* performSeque = [NSBlockOperation blockOperatioWithBlock:^(){
        [self performSegueWithIdentifier:@"segueId" sender:self];
    }];
    [performSeque addDependency: [SaveOperation saveOperation]];
    [[NSOperationQueue mainQueue] addOperation: performSeque];
    

    您的sequ将在您的保存操作结束后立即执行。

    【讨论】:

    • 太好了,以后再试试!谢谢!
    • @NickFarrant,如果这个解决方案对你有用,你能标记我的答案吗?
    • 没有机会检查但肯定会在我检查时标记它。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 2017-08-13
    • 1970-01-01
    相关资源
    最近更新 更多