无法将图像分配给ArrayView中的imageView,但可以将图像分配给来自UIImage变量的imageView
我有一个数组问题,并在视图之间传递图像,我希望得到一些帮助! 所以背景是我有:无法将图像分配给ArrayView中的imageView,但可以将图像分配给来自UIImage变量的imageView
•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,因为它集图像5到视图在“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语句进行访问,它会显示它。
这里是解决上述问题(贷记 “JSD” 从www.iphonedevsdk.com):
由于selectSlideView。 imageView是从一个笔尖加载的视图没有加载第一次通过。
我必须包括下面的代码行之前,我指定的图像从我的阵列的观点:
[selectSlideView view];
您可以尝试第一次直接加载图像,然后再缓存。 (我已经排除了缓存代码和缩放代码,但可以在获取图像后添加它们)。
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;
}
谢谢 - 我会试试这个并回复你 - 看起来像是一个干净利落的做法。我想知道哪里出了错阵列虽然。我之前已经完成了Java编程,但是这个Objective-C的东西稍有不同,所以它可能会让人有点困惑...... – trilithium 2009-11-10 12:40:33
所以我尝试了这一点,但它没有奏效。只是让我理解代码 - 执行此代码时,如果tmpInt = 1,它是寻找名为myImage1的文件,还是寻找名为myImage1的变量? 不幸的是,我还没有得到关于在这个阶段引发的异常的细节。有什么想法吗? – trilithium 2009-11-10 13:31:09
我没有添加当然的扩展名。 – Jordan 2009-11-10 13:40:45
我想看看你初始化和加载imageArray。 另外,不相关的,而不是tmpInt = [buttonArray indexOfObject:sender];你可以使用按钮的标签字段来存储索引。 – mahboudz 2009-11-10 11:38:38
谢谢mahboudz - 我会看标签字段。我已经发布了一些关于如何加载imageArray的代码,进一步向下。 对于标签 - 所有的UI对象都必须具有唯一的标签,还是只对同一类类型的UI对象很重要 - 即所有的UIButton都有独特的标签,但是UIImage使用相同的标签号码(例如)。 – trilithium 2009-11-10 12:43:36
您分配标签,如果您使它们唯一,它们是唯一的。例如:myButton.tag = 99; – Jordan 2009-11-10 14:17:25