もっと良い方法があるかもしれませんが、ユーザーが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を閉じた後でのみです。
助けてくれてありがとう。
ジョン