[英]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.