簡體   English   中英

無法將圖像從Array分配到imageView,但是可以從UIImage變量將圖像分配到imageView

[英]Unable to assign images to an imageView from an Array, but can assign images to an imageView from a UIImage variable

我在數組和在視圖之間傳遞圖像時遇到問題,希望對此有所幫助! 所以背景是我有:

•RootViewController(處理我的表視圖)

•CommunicationViewController,用於處理表中所選元素的詳細信息

•SelectSlideViewController,它顯示從CommunicationViewController單擊的圖像,並允許用戶從相機膠卷中選擇其他圖像

那么問題來了:

•在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語句進行訪問,它將顯示它。

您可以嘗試第一次直接加載圖像,然后再緩存。 (我已經排除了緩存代碼和縮放代碼,但是您可以在獲得圖像后添加它們)。

   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;
    }

這是上述問題的解決方案(從www.iphonedevsdk.com記為“ JSD”):

由於selectSlideView.imageView是從筆尖加載的,因此視圖不是第一次加載。

在將數組中的圖像分配給視圖之前,我必須包含以下代碼行:

[selectSlideView view];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM