2010-11-30 10 views
2

ボタンをクリックしたときに、別のビューコントローラに画像があるかどうかをチェックするようにします。しかし、現時点ではシミュレータがループを実行しないイメージがあります。別のビューコントローラからのビューコントローラとのやりとり

コード:

- (IBAction)buttonClicked:(id)sender { 

    iPhotoViewController *photo = [[iPhotoViewController alloc] initWithNibName:@"iPhotoViewController" bundle:nil] ; 


    if (photo.mainView.image) 
    { 
     but = (UIButton *) sender; 
     self.selectedImage = [_images objectAtIndex:but.tag]; 

     iPhoto2AppDelegate *delegate = [[UIApplication sharedApplication] delegate]; 
     [delegate.navController popViewControllerAnimated:YES]; 

     [photo release]; 
    } 

おかげで、 Praveenさん

答えて

0

はあなたの.mの両方のあなたの.hで

@property(nonatomic, retain) UIImage * image; // (or UIImageView *) 

@synthesize image; 

を定義したのですか?

1

iPhotoViewControllerの新しいインスタンスを作成しています。これは、使用するイメージがnibファイルで使用可能でなければならないことを意味します。そして、nibファイルで利用できるということは、それがあなたのプロジェクトで利用可能であることを意味するので、その画像がそこにあるかどうかをちょっと奇妙に見て、新しいiPhotoViewControllerを作成するだけです。

イメージがロードされているこのiPhotoViewControllerのインスタンスが既に存在していますか?もしそうなら、それはあなたがチェックする必要があるインスタンスです。

おそらくあなたは物事をテストしていて、ペン先でイメージを設定して、それが機能していることを確認したいと思うかもしれません。その場合、ビューコントローラを作成したにもかかわらずビューがまだロードされておらず、ペン先から設定されているため、理由photo.mainView.imageが設定されていません。これを偽装するには、画像が設定されているかどうかを確認する前に、コントローラのviewプロパティにアクセスする必要があります。

iPhotoViewController *photo = [[iPhotoViewController alloc] initWithNibName:@"iPhotoViewController" bundle:nil] ; 

[photo view]; 
if (photo.mainView.image) { 
// continue as before 
関連する問題