我正在函数 quizEnded 中创建 UIActionSheet。其中一个按钮将用户发送到 Game Center。当他们从游戏中心返回时,在 viewdidappear 中再次调用 quizended。这是在旧的操作表之上创建第二个操作表。
https://www.youtube.com/watch?v=QrY1Awt3RX0
我不认为再次调用 quizEnded 会导致问题,而是我没有正确关闭第一个 UIActionSheet。
-(void)viewDidAppear {
// some code ...
if(self.quizDidEnd > 0){
[BT_debugger showIt:self theMessage:@"@@@Calling quiz ended###"];
[self quizEnded];
}
}// end viewDidAppear
// initialize button array
-(void)quizEnded {
// some code ...
_finishedButtons = [[NSMutableArray alloc] init];
// show either the reward screen or the finished screen or quit to menu
if(earnedReward == TRUE && haveRewardScreen==TRUE) {
[_finishedButtons addObject:NSLocalizedString(@"quizShowReward", @"Show Reward")];
//[self showQuizRewardScreen];
}else {
if(haveFinishScreen==TRUE){
[_finishedButtons addObject:NSLocalizedString(@"continue", @"Continue")];
//[self showFinishScreen];
}else {
// if no finish screen then send back to rootviewcontroller
[_finishedButtons addObject:NSLocalizedString(@"quit", @"Quit")]; }
}
if(_enableGameCenter) {
[_finishedButtons addObject:NSLocalizedString(@"Game Center", @"Game Center")];
}
// initialize UIAction sheet
UIActionSheet *actionSheet = [[UIActionSheet alloc]
initWithTitle:quizResultMessage
delegate:self
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles: nil];
//add the buttons to the action sheet
for (int i = 0; i < [_finishedButtons count]; i++) {
[actionSheet addButtonWithTitle:[_finishedButtons objectAtIndex:i]];
}
actionSheet.destructiveButtonIndex = [_finishedButtons count];
[actionSheet setActionSheetStyle:UIActionSheetStyleBlackOpaque];
//is this a tabbed app?
if([appDelegate.rootApp.tabs count] > 0){
[actionSheet showFromTabBar:[appDelegate.rootApp.rootTabBarController tabBar]];
}else{
[actionSheet showInView:self.view];
}
[actionSheet release];
}//self.quizDidEnd == 0
}// end quizEnded
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
[BT_debugger showIt:self theMessage:@"!!!action sheet called!!!"];
NSString *buttonTitle = [actionSheet buttonTitleAtIndex:buttonIndex];
//quit only used if no finished or reward screen present
if([buttonTitle isEqual:NSLocalizedString(@"quit", @"Quit")]){
// if no finish screen then send back to rootviewcontroller
[self.navigationController popToRootViewControllerAnimated:YES];
[BT_debugger showIt:self theMessage:@"Quit tapped"];
}
//show reward
if([buttonTitle isEqual:NSLocalizedString(@"quizShowReward", @"Show Reward")]){
[self showQuizRewardScreen];
[BT_debugger showIt:self theMessage:@"Show Reward Tapped"];
}
//show continue
if([buttonTitle isEqual:NSLocalizedString(@"continue", @"Continue")]){
[self showFinishScreen];
[BT_debugger showIt:self theMessage:@"Continue Tapped"];
}
//show game center
if([buttonTitle isEqual:NSLocalizedString(@"Game Center", @"Game Center")]){
[BT_debugger showIt:self theMessage:@"game center tapped"];
[self showGameCenter];
_altend = 0;
}
}// end