gpt4 book ai didi

iphone - TableView didSelectRowAtIndexPath : Activity indicator not showing properly

转载 作者:行者123 更新时间:2023-11-28 20:34:01 25 4
gpt4 key购买 nike

我试图在用户点击它应该显示的 TableView 的单元格时显示事件指示器vw,并且一旦加载详细 View 它就应该隐藏。

但是它在 View 加载后显示然后隐藏。所以在 View 加载时显示指示器是没有用的

内部 View 加载:

activityBgImageView = [[UIView alloc] initWithFrame:self.view.frame];
[activityBgImageView setBackgroundColor:[UIColor blackColor]];
[activityBgImageView setAlpha:0.7];
[activityBgImageView setCenter:self.view.center];
[activityBgImageView setHidden:YES];

activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
[activityIndicatorView setCenter:CGPointMake(self.view.center.x+15, self.view.center.y-15)];
[activityIndicatorView setHidesWhenStopped:YES];
[activityBgImageView addSubview:activityIndicatorView];
[self.view addSubview:activityBgImageView];

这是我选择表的代码:

if([arrPostsData count]>0)
{
[self startActivityIndicatorView];

[self performSelector:@selector(showDetailVw) withObject:nil];

}

-(void)showDetailVw
{

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:.3];
detailVwBg.alpha = 0.0;
detailVwBg.alpha = 1.0;
btnBack.alpha = 1;

[self showPostDetail:arrPostsData tapedCell:detailvwScrollCount PostedFiles:arrUserPostedFilesDataDic comments:arrCommentsDataDic];

isDetailvwActive = TRUE;
[UIView commitAnimations];

}

and inside showPostDetail: method end i stop the indicator

请建议我需要在哪里放置正确的代码

这些是指标方法:

#pragma mark processindicator methods

-(void)startActivityIndicatorView{

[activityBgImageView setHidden:NO];
[activityIndicatorView startAnimating];
[self.view bringSubviewToFront:activityBgImageView];

if (![[UIApplication sharedApplication] isIgnoringInteractionEvents])
{
[[UIApplication sharedApplication] beginIgnoringInteractionEvents];
}


}

-(void)stopActivityIndicatorView{


if ([[UIApplication sharedApplication] isIgnoringInteractionEvents])
{
[[UIApplication sharedApplication] endIgnoringInteractionEvents];
}
[activityBgImageView setHidden:YES];
[activityIndicatorView stopAnimating];

}

最佳答案

有关线程和 iOS 的一些背景知识。对于要更改(视觉上)的所有 UI 元素,程序员需要在主线程中对它们进行更改。

由于 activityIndi​​catorView 是一个 UI 元素,它必须在主线程上运行才能显示旋转。如果您在主线程上执行其他操作,则 activityIndi​​catorView 将被阻止。因此,您不会立即看到旋转。当线程被释放时,您将看到它。

如果你想让这个工作,那么首先启动微调器,然后是后台线程,在 bg 线程中进行处理,完成后,来到主线程,停止微调器,最后用更改更新 UI。

希望这有助于...

关于iphone - TableView didSelectRowAtIndexPath : Activity indicator not showing properly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11208682/

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