2010-11-19 57 views
0

嗯,我有2个视图控制器拳头有三个按钮,每个代表图像阵列上的图像。当用户按下一个按钮时,在仅有一个IBOutlet UIImageView的第二个视图控制器上移动以查看图像。我如何使用UIImagePickerController来做这个编程技巧?这里是我的文件:UIImagePickerController和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 

回答

0

为什么你需要一个图像选择控制器来显示图像? ImagePickerController用于从相册中选取图像或使用相机。

你可以做的是将图像从PhotoListViewController传递到PhotoDetailViewController。

在PhotoDetailViewController中,您可以拥有UIImage(合成)的属性,以便在加载之前对其进行设置。然后在PhotoDetailVC中使用UIImageView来显示图像。 如果您正在寻找更高级的图像功能,请参阅

three20 at github的three20框架。

+0

感谢您的回答卡里姆,但我知道这种方式。我也想使用imagePickerController。如果你知道这样做的方式,请告诉我。提前致谢。 – 2010-11-21 21:54:34

相关问题