У меня проблема с массивами и передачей изображений между видами, по которым мне нужна помощь!
Таким образом, фон, который у меня есть:
• 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.