Как перерисовать мой взгляд в SWIFT?

В моем приложении для iPad у меня есть UIViewController с кнопкой, открывающей modalView.

@IBAction func showPostCommentViewController(sender: AnyObject){

    let modalView = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("PostCommentViewController") as! PostCommentViewController
    modalView.modalTransitionStyle = UIModalTransitionStyle.CoverVertical
    modalView.modalPresentationStyle = UIModalPresentationStyle.FormSheet
    modalView.delegate=self
    self.presentViewController(modalView, animated: true, completion: nil)
}

Когда я закрываю modalView с помощью dismissViewControllerAnimated, я хочу «обновить» свой контроллер представления (потому что я добавил новый контент). Но поскольку модальное представление представляет собой стиль «таблицы форм», viewDidAppear или viewWillAppear не вызываются.

Я попытался использовать setNeedsDisplay, но это не сработало.

Я не знаю, как это сделать.


person cmii    schedule 05.07.2015    source источник
comment
Что ты хочешь? setNeedsDisplay может обновлять макет и тому подобное, но содержимое меток и т. д. не изменится, вы должны изменить их явно. Что именно ты пытаешься сделать?   -  person luk2302    schedule 05.07.2015
comment
Вы можете создать делегата в PostCommentViewController, который будет создан, когда само представление исчезнет. Затем у вызываемого вы можете определить любое действие, которое хотите выполнить с конкретным делегатом.   -  person Audrey Li    schedule 05.07.2015


Ответы (1)


Это было бы идеальным вариантом использования шаблона делегата.

1) определить протокол в PostCommentViewController.

protocol PostCommentVCInformationDelegate {
    func hasDismissedPostCommentViewController(controller:PostCommentViewController)
}

2) Установите переменную делегата в PostCommentViewController

var delegate: PostCommentVCInformationDelegate?

3) Когда вы уволите PostCommentViewController, вы позвоните delegate?.hasDismissedPostCommentViewController(self)

Это отправит информацию обратно в представляющий ВК.

4) Теперь у нас есть представляющий контроллер представления, соответствующий этому протоколу.

class ViewController: UIViewController, PostCommentVCInformationDelegate

5) При представлении модального вида:

modalView.delegate = self

6) Наконец, мы реализуем:

func hasDismissedPostCommentViewController(controller: PostCommentViewController) {
    //Update
}
person BenJammin    schedule 05.07.2015
comment
Я не был знаком с протоколами. Отлично работает, спасибо! - person cmii; 06.07.2015