1

これは本当に簡単なアイデアのようです...「写真を読み込む」というボタンがあります。そのボタンがクリックされたら、現在のビューを削除し、新しいビューをロードし、イメージピッカーを開いて、選択した画像を取得し、ロードしたばかりのビューに表示します。UIImagePickerがviewDidLoadで機能しないといういくつかのドキュメントを読み、代わりにawakeFromNibを使用することを提案するスレッドを見つけましたが、それでも機能しません...ここにコードがあります。助けてください。

MenuViewControllerで

-(IBAction)loadPictureButtonPressed
{
    UIView *parent = [self.view superview];
    if(self.loadPictureViewController.view.superview == nil)
    {
         if(self.loadPictureViewController == nil)
         {
              LoadPictureViewController *picController = [[LoadPictureViewController alloc]
          initWithNibName:@"LoadPictureView" bundle: nil];
              self.loadPictureViewController = picController;
              [picController release];
        }
    }
    [parent addSubview:self.loadPictureViewController.view];
    [self.view removeFromSuperview];
}

LoadPictureViewControllerで

-(void)awakeFromNib
{
     if([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypePhotoLibrary])
     {  
            UIImagePickerController *picker = [[UIImagePickerController alloc] init];
            picker.delegate = self;
            picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
            [self presentModalViewController:picker animated:YES];
            [picker release];
    }
    else
    {
            UIAlertView *alert = [[UIAlertView alloc]
                           initWithTitle:@"Error!"
                           message:@"Device does not support photo library";
                           delegate:nil
                           cancelButtonTitle:@"Ok"
                           otherButtonTitles:nil];
           [alert show];
           [alert release];
   }
}

ここでも、このコードをviewDidLoadとawakeFromNibの両方に配置してみました。助けてください

4

2 に答える 2

0

viewDidLoad に NSTimer を 0 のタイマーで設定するだけで、ロードするメソッドを選択できます。

[NSTimer scheduledTimerWithTimeInterval:0 target:self selector:@selector(camera) userInfo:nil repeats:NO];
于 2009-12-21T02:56:14.830 に答える
0

NSTimer の代わりに、-viewDidLoad で次のものを使用することをお勧めします。

[self performSelector:@selector(camera) withObject:nil afterDelay:0];
于 2010-06-26T04:37:48.170 に答える