0

今日、奇妙な行動を見ました。「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はまったく表示されません。

ありがとう。

4

0 に答える 0