2010-11-19 11 views
0

Nun, ich habe 2 View-Controller der Faust hat drei Tasten, jeder repräsentiert ein Bild auf einem Array von Bildern. Wenn ein Benutzer eine Schaltfläche drückt, wird auf dem zweiten Ansichtscontroller, der nur ein IBOutlet UIImageView hat, das Bild angezeigt. Wie kann ich diesen Programmiertrick mit dem UIImagePickerController machen? Hier sind meine Dateien:UIImagePickerController und UINavigationController

// PhotoListViewController.h 


#import <UIKit/UIKit.h> 
#import "PhotoDetailViewController.h" 



@interface PhotoListViewController : UIViewController { 

    IBOutlet UIButton *button; 
    IBOutlet UIImageView *image1; 
    IBOutlet UIImageView *image2; 
    IBOutlet UIImageView *image3; 

    IBOutlet UILabel *label1; 
    IBOutlet UILabel *label2; 
    IBOutlet UILabel *label3; 

    IBOutlet UILabel *nameMikro1; 
    IBOutlet UILabel *nameMikro2; 
    IBOutlet UILabel *nameMikro3; 

    NSString *nameMikroProp; 

    IBOutlet PhotoDetailViewController *photoDetailViewController; 

} 
@property (nonatomic, retain) PhotoDetailViewController *photoDetailViewController; 


-(IBAction)showImage:(id)sender; 

@property (copy) NSString *nameMikroProp; 

@end 



// PhotoListViewController.m 


#import "PhotoListViewController.h" 
#import "PhotoDetailViewController.h" 

@implementation PhotoListViewController 
@synthesize nameMikroProp; 
@synthesize photoDetailViewController; 



-(IBAction)showImage:(id)sender{ 
    photoDetailViewController = [[PhotoDetailViewController alloc]init]; 
    //photoDetailViewController.delegate = self; 

    if([sender tag] == 4){ 
     //[photoDetailViewController.imageViewprop setImage:[UIImage imageNamed:@"zaab.png"]]; 
     //[self presentModalViewController:self.imgPicker animated:YES]; 

    } 
    else if([sender tag] == 5){ 
    } 
    else{ 
    } 

    [self.navigationController pushViewController:photoDetailViewController animated:YES]; 
    [photoDetailViewController release]; 


} 




// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 


    NSMutableArray *imageArray = [[NSMutableArray alloc] init]; 
    [imageArray addObject:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"main" ofType:@"jpg"]]]; 
    [imageArray addObject:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"main2" ofType:@"jpg"]]]; 
    [imageArray addObject:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"main3" ofType:@"jpg"]]]; 
    NSMutableArray *nameArray = [[NSMutableArray alloc] init]; 
    [nameArray addObject:@"zaab's photo one"]; 
    [nameArray addObject:@"zaab's photo two"]; 
    [nameArray addObject:@"zaab's photo three"]; 

    nameMikro1.text = nameMikroProp; 
    nameMikro2.text = nameMikroProp; 
    nameMikro3.text = nameMikroProp; 

    if([@"zaab" isEqualToString:nameMikro1.text]) { 
     [image1 setImage:[imageArray objectAtIndex:0]]; 
     [image2 setImage:[imageArray objectAtIndex:1]]; 
     [image3 setImage:[imageArray objectAtIndex:2]]; 
     [label1 setText:[nameArray objectAtIndex:0]]; 
     [label2 setText:[nameArray objectAtIndex:1]]; 
     [label3 setText:[nameArray objectAtIndex:2]]; 
    } 

    else if([@"evza" isEqualToString:nameMikro1.text]) { 
     [image1 setImage:[UIImage imageNamed:@"evza.jpg"]]; 
    } 

    [imageArray release]; 
    [nameArray release]; 


    [super viewDidLoad]; 

} 




- (void)didReceiveMemoryWarning { 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
} 

- (void)viewDidUnload { 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 


- (void)dealloc { 
    [nameMikro1 release]; 
    [nameMikro2 release]; 
    [nameMikro3 release]; 
    [label1 release]; 
    [label2 release]; 
    [label3 release]; 
    [image1 release]; 
    [image2 release]; 
    [image3 release]; 
    [super dealloc]; 
} 


@end 


// PhotoDetailViewController.h 


#import <UIKit/UIKit.h> 


@interface PhotoDetailViewController : UIViewController<UINavigationControllerDelegate, UIImagePickerControllerDelegate> { 

    IBOutlet UIImageView *imageViewprop; 
    UIImagePickerController *imgPicker; 

} 

@property (nonatomic, retain) UIImageView *imageViewprop; 
@property (nonatomic, retain) UIImagePickerController *imgPicker; 

- (IBAction)grabImage; 


@end 


// PhotoDetailViewController.m 


#import "PhotoDetailViewController.h" 


@implementation PhotoDetailViewController 
@synthesize imageViewprop; 
@synthesize imgPicker; 

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo { 
    imageViewprop.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"main" ofType:@"jpg"]]; 
    [[picker parentViewController] dismissModalViewControllerAnimated:YES]; 
} 

- (IBAction)grabImage { 
    [self presentModalViewController:self.imgPicker animated:YES]; 
} 


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.imgPicker = [[UIImagePickerController alloc] init]; 
    self.imgPicker.allowsImageEditing = NO; 
    self.imgPicker.delegate = self; 
    self.imgPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 

} 


- (void)didReceiveMemoryWarning { 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
} 

- (void)viewDidUnload { 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 


- (void)dealloc { 
    [super dealloc]; 
} 


@end 

Antwort

0

Warum brauchen Sie einen Bildauswahl-Controller, um ein Bild anzuzeigen? ImagePickerController wird verwendet, um ein Bild aus dem Album oder mithilfe der Kamera auszuwählen.

Sie können das Bild von PhotoListViewController an PhotoDetailViewController übergeben.

Im PhotoDetailViewController können Sie eine Eigenschaft von UIImage (synthetisiert) haben, so dass Sie sie vor dem Laden setzen können. Verwenden Sie dann im PhotoDetailVC eine UIImageView, um das Bild anzuzeigen. Wenn Sie mehr Voraus-Funktionalität mit Bild suchen, schauen Sie sich das three20-Framework unter

an.

+0

danke für deine antwort karim aber ich kenne diesen weg. Ich würde es auch gerne mit einem imagePickerController machen. Wenn Sie einen Weg kennen, lassen Sie es mich wissen. Danke im Voraus. –

Verwandte Themen