Я хочу вызвать функцию на контроллере представления после того, как модаль был уволен. Я потратил часы, пытаясь заставить это работать, и все ответы, которые я нашел, не сработали. Я следую инструкциям других и настраиваю протокол, но это все еще не работает.Функция запуска после модального отклонения в Swift
MainController:
class ViewController: UIViewController, UIPopoverPresentationControllerDelegate, loadStoreDelegate{
Тогда, чтобы вызвать модальный я использую
func displaySelectStorePopup(){
if let viewController = self.storyboard?.instantiateViewControllerWithIdentifier("SelectStoreView"){
let selectStoreController = viewController
selectStoreController.modalPresentationStyle = .Popover
if let sctrl = selectStoreController.popoverPresentationController{
sctrl.delegate = self
sctrl.sourceView = self.view
sctrl.sourceRect = CGRectMake(CGRectGetMidX(self.view.bounds), CGRectGetMidY(self.view.bounds),0,0)
sctrl.permittedArrowDirections = UIPopoverArrowDirection()
delay(0.1){
sctrl.passthroughViews = nil
}
selectStoreController.modalInPopover = true
selectStoreController.preferredContentSize = CGSizeMake(400, 400)
self.presentViewController(selectStoreController, animated: true, completion: nil)
}
}
}
Тогда функция ид нравится использовать
func loadStore() {
print(2)
//let vc : AnyObject! = self.storyboard!.instantiateViewControllerWithIdentifier("DashboardView")
//self.showViewController(vc as! UIViewController, sender: vc)
}
ModalViewController: Протокол
protocol loadStoreDelegate{
func loadStore()
}
class SelectStoreViewController: UIViewController, UITableViewDataSource, UITableViewDelegate{...
var delegate: loadStoreDelegate?
Затем вызовите функцию Tableview мыши
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){
self.delegate?.loadStore()
if(tableView == selectStoreTable){
currentStore = userStores[indexPath.row]
self.dismissViewControllerAnimated(false, completion: nil)
}
}
Вы звоните 'loadStore () '_before_ вызов' self.dismissViewControllerAnimated (false, completion: no) '. Так что это не «после того, как он был уволен». – matt
Вы установили точку останова в вашей 'didSelectRowAtIndexPath', чтобы увидеть, что происходит? – Paulw11
Да, я получаю нулевое значение от делегата. –