2015-01-16 4 views
0

Половина моего окна - UITableView, а другая - PageViewController.Swift: Обновление UIImageView Image

В моей PageViewController, у меня есть два свойства:

@IBOutlet weak var displayImageView: UIImageView! 
var displayImage : UIImage? 

PageViewController viewDidLoad Поручаю:

override func viewDidLoad() { 
     super.viewDidLoad() 
     self.displayImageView.image = self.displayImage 
    } 

displayImageView является outlet подключен к моей сцене в Storyboard. Поскольку User отбирает разные ячейки, мне бы хотелось, чтобы изображение в displayImageView изменилось.

В моей parentViewController, который отображает tableView и PageViewController, я называю следующий метод в моем didSelectRowAtIndexPath

func getDisplayImageForSelectedRow() { 
    var row = self.tableView.indexPathForSelectedRow()?.row 
    //DisplayImageVC is a contentViewController that is loaded by pageViewController 
    var displayImageVC = self._pageContent[1] as DisplayImageVC 
    displayImageVC.displayImage = self._displayImage[row!] as UIImage 
    println(displayImageVC.displayImage) 
    if (self.isPageViewVisible){ 
     displayImageVC.displayImageView.reloadInputViews() 
     displayImageVC.displayImageView.setNeedsDisplay() 
    } 
} 

Здесь журнал от println():

You selected cell #0 
Optional(<UIImage: 0x7c21c2e0>) 
You selected cell #1 
Optional(<UIImage: 0x7c21c5a0>) 
You selected cell #2 
Optional(<UIImage: 0x7c21cd00>) 
You selected cell #3 
Optional(<UIImage: 0x7c21cff0>) 
You selected cell #4 
Optional(<UIImage: 0x7c21d2d0>) 

Основываясь на бревне, я полагаю, назначается новое изображение; однако выходная линия UIImageView продолжает показывать то же изображение, которое было загружено при первой загрузке страницыViewController.

Как вы могли заметить, в коде, я попытался следующие строки кода, чтобы получить UIImageView, чтобы обновить, но не помогло:

displayImageVC.displayImageView.reloadInputViews() 
displayImageVC.displayImageView.setNeedsDisplay() 

Как я могу получить UIImageView показать новое изображение что было загружено?

+0

displayImage.image = ... Minor перепутать я думаю. –

+0

displayImage - это UIImage. – user1107173

ответ

1

В getDisplayImageForSelectedRow вы только обновления UIImage, вы также должны назначить изображение зрения .:

func getDisplayImageForSelectedRow() { 
    .. 
    displayImageVC.displayImage = self._displayImage[row!] as UIImage 
    displayImageVC.displayImageView.image = displayImageVC.displayImage <--THIS 
    .. 
} 
+0

На самом деле, что вызвало сбой b/c, я не думаю, что вы должны установить свойство IBOutlet из другого класса. Однако я создал метод в дочернем элементе и вызвал: 'func referhUIImageView() { self.planImageView.image = self.planImage } '' – user1107173

+0

Рад, что это помогло, но авария, должно быть, имела другую причину (Т.е., не тот факт, что мы устанавливаем выход из другого класса. Выход - это просто свойство, которое инициализируется определенным образом, не более, не что иное) – sergio