2009-11-19 6 views
1

Cela semble être une idée très simple ... J'ai un bouton qui dit "charger une image". Lorsque vous cliquez sur ce bouton, je veux supprimer la vue actuelle, en charger une nouvelle, ouvrir le sélecteur d'image, obtenir l'image sélectionnée et l'afficher dans la vue que je viens de charger. J'ai lu plusieurs documents qui disent que UIImagePicker ne fonctionne pas dans viewDidLoad, et j'ai trouvé un thread qui suggérait d'utiliser awakeFromNib à la place, mais même cela ne fonctionne pas ... voici le code. S'il vous plaît aider.Comment charger UIImagePickerController à viewLoad

Dans 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]; 
} 

Dans 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]; 
    } 
} 

Encore une fois j'ai essayé de placer ce code dans les deux viewDidLoad et awakeFromNib. S'il vous plaît aider

Répondre

0

Je simplement définir un NSTimer dans viewDidLoad avec une minuterie de 0 pour sélectionner la méthode où je le charge.

[NSTimer scheduledTimerWithTimeInterval:0 target:self selector:@selector(camera) userInfo:nil repeats:NO]; 
0

Au lieu de NSTimer, vous voulez probablement utiliser ce qui suit dans -viewDidLoad,

[self performSelector:@selector(camera) withObject:nil afterDelay:0]; 
Questions connexes