gpt4 book ai didi

iphone - 如何在选择单元格后立即显示 UIAlert 并在显示新的 UIView 后结束它?

转载 作者:行者123 更新时间:2023-11-29 04:56:23 27 4
gpt4 key购买 nike

在我的 iPhone 应用程序中,如何创建一个 UIAlert(或其他一些指示器)来向用户突出显示数据正在加载,以便:

  1. 当用户在 UITableViewController A 中选择一个单元格时启动,并且
  2. 在 UITableViewController B 实际显示后结束

我的大致流程是:

  • Controller A
    • 用户选择行
    • 提醒开始
    • 为 Controller B 准备而加载的数据
  • Controller B
    • 在 viewDidLoad 中关闭加载指示器

需要找到一种方法来执行此操作,以便使用的“正在加载”指示器实际上立即显示在当前 View 上......

最佳答案

我个人的做法是首先在头文件中分配一个警报:

UIAlertView *alert;

然后在 tableView:didSelectRowAtIndexPath: 方法中创建并显示警报。

alert = [[UIAlertView alloc] init....];
[alert show];
// start the loading process for your data to push to the next view

然后要关闭 View ,只需在 viewWillDisappear:animated: 方法中执行如下调用:

[alert dismissWithClickedButtonIndex:0 animated:YES];

这应确保在呈现下一个 View 之前消除警报。我希望这有帮助。如果您有任何疑问,我很乐意为您提供更详细的描述

编辑:为了从不同的 View 中消除警报,您必须创建一个方法,在其中创建警报以消除它,将标题导入到它要推送到的 View 中,从 child ,然后在你想要的时候解雇。下面我会详细解释。因此,首先,创建一个方法来从父级中消除 View ,我将其称为 Parent

- (void)dismissAlert {
[alert dismissAlertWithClickedButtonIndex:0 animated:YES];
}

在您推送到的 View 中,请务必将#import "Parent.h" 放在实现文件的顶部。

现在只需找到 View 并调用方法即可。您可以更改调用的位置,但出于示例目的,我将在 Child 文件中的 viewDidAppear: 方法中启动一个计时器,然后从那里开始。

- (void)viewDidAppear:(BOOL)animated {
[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(dismiss) userInfo:nil repeats:NO];
}

然后创建dismiss方法

- (void)dismiss {
// find the Parent view, which is most likely the top view in the navigation stack
// self.parentViewController will be the navigationController
// calling childViewControllers gets the navigation stack, so we get the view from there
[(Parent *)[[self.parentViewController childViewControllers] objectAtIndex:0] dismissAlert];
}

我已经对此进行了测试,它确实有效,所以希望它对您有用。您可以根据自己的喜好更改时间间隔。考虑到我不知道您的应用程序的层次结构,很难说父 View 相对于 subview 的位置,但如果上面不是的话,您可以尝试找到它。

关于iphone - 如何在选择单元格后立即显示 UIAlert 并在显示新的 UIView 后结束它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7895871/

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