1

我正在从 UIActionSheet 的 clickButtonAtIndex 函数启动 UIActivityIndi​​cator。这是代码

+(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{

NSLog(@"AS Button Clicked %d",buttonIndex);

UIActivityIndicatorView *indicator=[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];

indicator.frame=CGRectMake(10, 10, 56, 56);
[indicator startAnimating];
[[actionSheet superview] addSubview:indicator];

}

下面给出了启动 UIActionSheet 的代码

UIActionSheet * actionSheet = [[UIActionSheet alloc] initWithTitle: nil
                                                          delegate: self
                                                 cancelButtonTitle: nil
                                            destructiveButtonTitle: @"Cancel"
                                                 otherButtonTitles: @"Button1",
                               @"Button2", nil];

[actionSheet showFromRect: rect inView: view animated: YES];

但是,单击按钮的那一刻,UIActivityIndi​​cator 会与 UIActionSheet 一起消失。

我在这里想念什么?

4

3 回答 3

2

操作表的超级视图要么是一个新窗口,要么是覆盖屏幕的其他视图。当您关闭操作表时,也会删除此其他窗口或视图。

由于您将活动指示器添加到此其他视图,因此活动指示器与操作表的其余部分一起消失。

您需要将活动指示器添加到与操作表无关的内容。

于 2013-08-23T07:43:04.137 回答
1

您正在将其放入操作表的超级视图中。您不知道是哪个视图,因为操作表视图层次结构是私有的,并且超级视图随着操作表消失。

而是将指标放入您的视图之一。

于 2013-08-23T07:44:43.050 回答
0

问题在于[[actionSheet superview] addSubview:indicator];

请将此编辑为[self.view addSubview:indicator];

您正在将活动指示器添加到UIActionSheet其中,一旦消失,显然会UIActionSheet消失。

使用编辑后的代码,您将把它添加到View自身中。即使在您解雇后,这现在也会使活动指示器可见。UIActionSheet

于 2013-08-23T07:44:51.200 回答