我有一个数组问题,并在视图之间传递图像,我希望得到一些帮助! 所以背景是我有:
•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语句访问它,它会显示它。
答案 0 :(得分: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;
}
答案 1 :(得分:0)
以上是上述问题的解决方案(来自www.iphonedevsdk.com的“JSD”):
由于selectSlideView.imageView是从笔尖加载的,因此第一次没有加载视图。
在将我的Array中的图像分配给视图之前,我必须包含以下代码行:
[selectSlideView view];