我从UIActionSheet的clickButtonAtIndex函数启动UIActivityIndicator。这是代码
+(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];
但是,单击一个按钮时,UIActivityIndicator会随着UIActionSheet一起消失。
我在这里缺少什么?
答案 0 :(得分:2)
操作表的超级视图是新窗口或覆盖屏幕的其他视图。当您关闭操作表时,也会删除此其他窗口或视图。
由于您要将活动指示符添加到此其他视图,因此活动指示符将与操作表的其余部分一起消失。
您需要将活动指示符添加到与操作表无关的内容中。
答案 1 :(得分:1)
您将其置于行动表的超级视图中。您不知道哪个视图是因为操作表视图层次结构是私有的,并且超视图随操作表一起消失。
将指标放入您的一个视图中。
答案 2 :(得分:0)
问题在于[[actionSheet superview] addSubview:indicator];
请将其编辑为[self.view addSubview:indicator];
您正在将活动指标添加到UIActionSheet
,一旦UIActionSheet
消失,该指标就会明显消失。
使用已编辑的代码,您将把它添加到View
本身。现在,即使在UIActionSheet
解雇后,这也会显示活动指标。