今日、奇妙な行動を見ました。「BloodWingViewController(viewcontrollerのサブクラス)」と呼ばれるviewcontrolerからuiimagepickercontrollerを開こうとしていました。ピッカーを表示するコードは次のとおりです。
if (self.picker == nil) {
[SVProgressHUD showWithStatus:@"Loading picker..."];
dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(concurrentQueue, ^{
self.picker = [[[UIImagePickerController alloc] init] autorelease];
self.picker.delegate = self;
self.picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
self.picker.allowsEditing = NO;
dispatch_async(dispatch_get_main_queue(), ^{
[self.navigationController presentModalViewController:picker animated:YES];
[SVProgressHUD dismiss];
});
});
} else {
[self.navigationController presentModalViewController:picker animated:YES];
}
上記のコードは問題なく動作します。問題ありません。私が見た奇妙なことは、プッシュシーグを介してこのいわゆる「BllodWingViewController」に入り、ピッカーを開こうとすると、機能することでした。しかし、モーダルシーグを介していわゆる「BllodWingViewController」に再びアクセスし、ピッカーを開こうとすると、まったく機能しません。ピッカーは開きません。この背後にある理由を説明してもらえますか? そして、モーダルシーグ接続を介して実行されたviewcontrollerからピッカーを開く必要があるため、この問題を克服する方法。
あなたを混乱させるなら、私の英語でごめんなさい:P
編集:
- (IBAction)onPhotoPickerClick:(id)sender {
if (self.picker == nil) {
[SVProgressHUD showWithStatus:@"Loading picker..."];
dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(concurrentQueue, ^{
self.picker = [[[UIImagePickerController alloc] init] autorelease];
self.picker.delegate = self;
self.picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
self.picker.allowsEditing = NO;
dispatch_async(dispatch_get_main_queue(), ^{
[self.navigationController presentModalViewController:picker animated:YES];
[SVProgressHUD dismiss];
});
});
} else {
[self.navigationController presentModalViewController:picker animated:YES];
}
}
#import <UIKit/UIKit.h>
@interface EditStudentViewController : UIViewController{ UIImagePickerController * ピッカー; }
- (IBAction)onPhotoPickerClick:(id)送信者;
@property (retain, nonatomic) UIImagePickerController * ピッカー;
@終わり
プッシュ セグエ接続を使用して EditStudentViewController にアクセスすると、onPhotoPickerClick が機能し、フォト ライブラリが表示され、画像を選択できるようになります。しかし、以前のviewcontrollerからEditStudentViewControllerに来ると、photolibaryはまったく表示されません。
ありがとう。