0

配列とビュー間での画像の受け渡しに問題があり、助けが必要です。だから背景は私が持っているということです:

•RootViewController(テーブルビューを処理します)

•テーブルから選択した要素の詳細を処理するCommunicationViewController

•CommunicationViewControllerからクリックされた画像を表示し、ユーザーがカメラロールから別の画像を選択できるようにするSelectSlideViewController

だから問題:

•CommunicationViewConrollerで、ユーザーがボタンをクリックすると、次のコードが表示されます。

- (IBAction) selectSlide:(id) sender
{
 if(self.selectSlideView == nil)
 {
 SelectSlideViewController *viewController = [[SelectSlideViewController alloc]
           initWithNibName:@"SelectSlideViewController" bundle:[NSBundle mainBundle]];
  self.selectSlideView = viewController;
  [viewController release];
 }

 [self.navigationController pushViewController:self.selectSlideView animated:YES];
 self.selectSlideView.cmn = cmn;
 self.selectSlideView.title = cmn.name;
 self.selectSlideView.imageView.image = self.myImage5;
}

そして、上記のコードは機能します。たとえば、ボタン5をクリックすると、image5が「SelectSlideViewController」のビューに設定されます。

ただし、同じ「selectSlide」アクションを使用する複数のボタンが必要です。そのためには、どのボタンが押されたかを把握し、画像の配列から「SelectSlideViewController」に正しい画像を割り当てる必要があります(または不格好な一連のif-elseステートメント)。

•したがって、私の改訂されたコードは次のとおりですが、配列では機能しません–何か考えはありますか?:

- (IBAction) selectSlide:(id) sender
{
 if(self.selectSlideView == nil)
 {
 SelectSlideViewController *viewController = [[SelectSlideViewController alloc]
             initWithNibName:@"SelectSlideViewController" bundle:[NSBundle mainBundle]];
  self.selectSlideView = viewController;
  [viewController release];
 }

 NSUInteger tmpInt = -1;
 tmpInt = [buttonArray indexOfObject:sender];

 [self.navigationController pushViewController:self.selectSlideView animated:YES];
 self.selectSlideView.cmn = cmn;
 self.selectSlideView.title = cmn.name;

 NSLog(@"The int was %d",tmpInt);
 NSLog(@"This is the image array size %d ",[imageArray count]); 

 If(tmpInt >-1 && tmpInt <9)
 {
  self.selectSlideView.imageView.image = [imageArray objectAtIndex:tmpInt];
 }
 /** this code works, but is a bit clunky:
 if(tmpInt == 0)
  self.selectSlideView.imageView.image = self.myImage1;
 else if (tmpInt == 1)
  self.selectSlideView.imageView.image = self.myImage2;
 else if (tmpInt == 2)
  self.selectSlideView.imageView.image = self.myImage3;
 else if (tmpInt == 3)
  self.selectSlideView.imageView.image = self.myImage4;
 else if (tmpInt == 4)
  self.selectSlideView.imageView.image = self.myImage5;
 else if (tmpInt == 5)
  self.selectSlideView.imageView.image = self.myImage6;
 else if (tmpInt == 6)
  self.selectSlideView.imageView.image = self.myImage7;
 else if (tmpInt == 7)
  self.selectSlideView.imageView.image = self.myImage8;
 else if (tmpInt == 8)
  self.selectSlideView.imageView.image = self.myImage9; 
 **/
}

imageArrayのサイズが9であり、配列から正しいインデックスを選択していることを確認しましたが、配列からアクセスした場合、SelectSlideViewControllerは画像を表示しません。不格好なif-elseステートメントを使用してアクセスすると表示されます。

4

2 に答える 2

0

最初に画像を直接ロードしてから、後でキャッシュすることができます。(キャッシュ コードとスケーリング コードは除外しましたが、画像を取得した後で追加できます)。

   If(tmpInt >-1 && tmpInt <9)
     {
      // Check if already cached
         self.selectSlideView.imageView.image = [self getButtonImages:tmpInt];
      // add scaling code here for smaller image

     }

@implementation では、次を追加できます。

 - (UIImage) getButtonImages:(NSInteger)index
    {   
        UIImage* myImage = [UIImage imageNamed:@"image%d.jpg", index];
        return myImage;
    }
于 2009-11-10T12:23:36.473 に答える
0

上記の問題の解決策は次のとおりです(www.iphonedevsdk.comの「JSD」にクレジットされています):

selectSlideView.imageView は nib から読み込まれたため、最初はビューが読み込まれませんでした。

配列からビューに画像を割り当てる前に、次のコード行を含める必要がありました。

[selectSlideView view];
于 2009-11-16T17:22:03.193 に答える