2016-08-29 1 views
1

Как изменить изображение IBOutlet, установленное в UITableViewCell, используя сегментированный элемент управления в другом контроллере представления с помощью быстрого доступа?Изменение изображения в UITableViewCell с использованием сегментированного управления в другом представлении

UITableViewCell.swift:

class UserCell: UITableViewCell { 

    @IBOutlet var imageDisplayIcon: UIImageView! 

ViewController:

@IBAction func btnClicked(sender: AnyObject) { 

    if txtSex.selectedSegmentIndex == 0{ 

     var imagePicView: UserCell = UserCell() 

     imagePicView.imageDisplayIcon.image = UIImage(named: "BoyIcon.png") 

     //imageDisplay.image = UIImage(named: "BoyIcon.png") 

     print("male") 

    } 

    if txtSex.selectedSegmentIndex == 1{ 


     var imagePicView: UserCell = UserCell() 

     imagePicView.imageDisplayIcon.image = UIImage(named: "GirlIcon1.png") 

     //imageDisplay.image = UIImage(named: "GirlIcon1.png") 

     print("female") 

    } 

Я получаю сообщение об ошибке говорящее

"fatal error: unexpectedly found nil while unwrapping an Optional value." 

Что мне делать ??

+0

Есть ли 'tableView' в вашем' viewController' добавлен ?, Если да, вам нужно изменить изображение в 'cellForRowAtIndexPath'. –

ответ

0

Я полагаю, у вас есть UITableView

1. Обновить табличные данные в действии

@IBAction func btnClicked(sender: AnyObject) { 
    tableView.reloadData() 
} 

2. Добавить ячейку изображения в источнике данных таблицы делегата

func tableView(_ tableView: UITableView, 
    cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let imageName = txtSex.selectedSegmentIndex == 0 ? "BoyIcon.png" : "GirlIcon1.png" 

    // Load your cell 

    cell.imageDisplayIcon.image = UIImage(named: imageName) 

    return cell 
} 
+0

Действие «@btnClicked» не происходит в viewController для tableView. поэтому я думаю, что «tableView, reloadData» снова показывает ошибку. –

+0

@ Jenita_Alice4Real, если у вас есть tableView в другом viewcontreller, вы должны либо вызвать функцию этого контроллера представления, чтобы перезагрузить таблицу, либо открыть представление tableview как общедоступное свойство. –

+0

Контроллер вида, где я написал код, не является представлением для моей таблицы. его другой вид, где пользователь должен выбирать между мужчиной и женщиной, чтобы изображение изменялось в ячейке соответственно. –

0

Вы должны перезагрузить tableview на своем сегменте, нажав кнопку ction после настройки изображения ячейки, чтобы он повлиял на отображение таблицы!

И вам необходимо управлять cellforrow соответственно. В вашем методе источника данных должно быть условие, что если выбранный сегмент является самцом, тогда изображение должно быть мужчиной и наоборот!

0

Вы должны использовать «делегат» между вашим UserCell и ViewController. Это лучший способ.