UIImagePickerController和UINavigationController

时间:2010-11-19 21:19:03

标签: iphone uinavigationcontroller uiimagepickercontroller

嗯,我有2个视图控制器,拳头有三个按钮,每个按钮代表一个图像阵列上的图像。当用户按下按钮时,在仅具有IBOutlet UIImageView的第二视图控制器上移动以查看图像。如何使用UIImagePickerController执行此编程技巧?这是我的文件:

//  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

1 个答案:

答案 0 :(得分:0)

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

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

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

中的three20框架

three20 at github