2015-06-15 2 views
0

У меня есть ViewController, который состоит из UILabel и UIButton. OnClick UIButton a popOver настоящее время, которое показывает tableView. каждая ячейка tableView представляет собой другой вариант шрифта.Возможно изменить шрифт UILabel из другого класса ViewController

Я хочу изменить шрифт UILabel на основе выбранного пользователем шрифта с tableViewCell. как я могу достичь этого, так как мои UILabel и tableView находятся в другом классе viewController.

Пожалуйста, помогите мне.

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    var row = indexPath.row 
    // How to update label from here 
} 

Редактировать: Я люблю этот ответ, но не в состоянии понять, как его возвращение в Objective C update ViewController label text from different view

+2

Использование протокола и делегатов или блоков или NotificationCenter – Mrug

+0

@Mrug может ссылаться на пример –

+1

Оформить заказ, http://code.tutsplus.com/tutorials/swift-from-scratch-delegation-and-properties--cms- 23445 и этот http://codewithchris.com/learn-swift-from-objective-c-part3/ – Mrug

ответ

1

Вы можете использовать делегат. В вашем popover Swift файл создать такой протокол:

protocol PopoverDelegate { 
    func didSelectFont(font: UIFont) 
} 

В вашем popover классе создать такую ​​реализацию недавно созданного протокола:

class popoverviewcontroller : UITableViewController { 
    var delegate: PopoverDelegate? 

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
     var row = indexPath.row 
     // How to update label from here 
     delegate.didSelectFont(youFontHere) 
    } 
} 

Теперь в главном контроллере представления, если вы представляете свой popover программно, вы должны установить delegate свойства popover self. Если ваши представляет поповер из раскадровки, просто обращаться непосредственно перейти:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    // Get the new view controller using [segue destinationViewController]. 
    // Pass the selected object to the new view controller. 
    let destination = segue.destinationViewController as! popoverviewcontroller 
    destination.delegate = self 
} 

Теперь реализовать метод делегата:

func didSelectFont(font: UIFont) { 
    //Update label's font 
} 

И, конечно же, не забудьте добавить делегат к вашему основному контроллеру вида:

class mainViewController: UIViewController, PopoverDelegate { ... 

Надеюсь, это поможет!

+0

спасибо за ваше объяснение –

Смежные вопросы