1

関数 quizEnded 内に UIActionSheet を作成しています。ボタンの 1 つは、ユーザーを Game Center に送ります。彼らがゲーム センターから戻ると、quizended が viewdidappear 内で再度呼び出されます。これにより、古いアクション シートの上に 2 番目のアクション シートが作成されます。

https://www.youtube.com/watch?v=QrY1Awt3RX0

最初のUIActionSheetを適切に却下しているのではなく、quizEndedを再度呼び出すことで問題が発生しているとは思いません。

-(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 
4

4 に答える 4

1

私が見ているものからアクションシートを却下しているのではありません...- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animatedアクションシートを却下するように呼びかける必要があります。

于 2013-03-29T00:05:45.883 に答える
0

これを追加:

if(recognizer.state == UIGestureRecognizerStateBegan){
        UIActionSheet *as = [[UIActionSheet alloc] initWithTitle:@""
    }
于 2014-12-19T03:01:17.827 に答える
0
if(gesture.state == UIGestureRecognizerStateBegan){
    UIActionSheet *sheet;

    sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"" destructiveButtonTitle:nil otherButtonTitles:@"", nil];
    [sheet showInView:self.view];
}
于 2015-07-24T08:20:33.450 に答える