0

もっと良い方法があるかもしれませんが、ユーザーがUIalertViewのボタンをタップしたときに選択リストをポップしたいと思います。アラートビューが表示されている間にこのリストをポップし、ユーザーが選択リストの項目をタップしたときにすべてを閉じたいと思います。

リストをUIAlertViewにサブビューとして追加し、選択リストで設定されたフラグでポップするwhileループでUIalertViewをNSRunLoopで表示したままにすることでそれができると思いました。ただし、whileループがNSRunLoopに戻る前にフラグが設定されないため、これを機能させることはできません。2回タップすると、whileループから外れますが、それは私が望んでいることではありません。

- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex{
   CGRect popUpPickerFrame = alertView.frame;
   PopUpPicker *popUpPicker = [[PopUpPicker alloc] initWithFrame:CGRectMake(popUpPickerFrame.origin.x +150,popUpPickerFrame.origin.y-50,115,250)];
   popUpPicker.delegate = self;
   popUpPicker.aList = [NSArray arrayWithObjects:@"General Plan", @"Light Plan", @"Melatonin Plan", @"Bed Times", @"Done", nil];
   popUpPicker.tag = 10;
   [alertView addSubview:popUpPicker];

   while (popUpPicker.tag == 10) {
       [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode 
                             beforeDate:[NSDate distantFuture]];
   }
   [popUpPicker release];
}

popUpPicker.tagを、ユーザーがリストのtableView:didSelectRowAtIndexPath:メソッドでタップした行に設定しています。このメソッドは、リストデリゲートメソッドを呼び出します。

ポップアップリストを正常に動作させることができますが、UIAlertViewを閉じた後でのみです。

助けてくれてありがとう。

ジョン

4

1 に答える 1

0

あなたのワークフローは、UIAlertView の概念には適用できません。ボタンを押した後にリスト内の選択肢を提供するようには設計されていません。WWDC 2011 の誰かが「フレームワークと戦うな」と言っていました。このアドバイスはあなただけのものです。本当に必要な場合を除いてアラートを回避するか、タスクにアクション シートを使用するか、ViewController でワークフローを実装することを検討してください。

于 2011-12-23T23:16:07.607 に答える