Ich möchte eine Funktion auf einem View-Controller aufrufen, nachdem ein Modal wurde entlassen. Ich habe stundenlang versucht, dies zur Arbeit zu bringen und alle Antworten, die ich gefunden habe, haben nicht funktioniert. Ich habe Anweisungen von anderen gefolgt und ein Protokoll erstellt, aber das funktioniert immer noch nicht.Run-Funktion nach Modal in Swift entlassen
MainController:
class ViewController: UIViewController, UIPopoverPresentationControllerDelegate, loadStoreDelegate{
dann die modale auszulösen I
verwendenfunc 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)
}
}
}
Dann ist die Funktion ID
func loadStore() {
print(2)
//let vc : AnyObject! = self.storyboard!.instantiateViewControllerWithIdentifier("DashboardView")
//self.showViewController(vc as! UIViewController, sender: vc)
}
ModalViewController verwenden mag: Das Protokoll
protocol loadStoreDelegate{
func loadStore()
}
class SelectStoreViewController: UIViewController, UITableViewDataSource, UITableViewDelegate{...
var delegate: loadStoreDelegate?
Dann rufen Sie die Funktion auf Tableview klicken
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){
self.delegate?.loadStore()
if(tableView == selectStoreTable){
currentStore = userStores[indexPath.row]
self.dismissViewControllerAnimated(false, completion: nil)
}
}
Sie rufen 'loadStore () '_before_ calling' self.dismissViewControllerAnimated (false, completion: nil) '. Das ist also nicht "nachdem es entlassen wurde". – matt
Haben Sie in Ihrem 'didSelectRowAtIndexPath' einen Haltepunkt gesetzt, um zu sehen, was passiert? – Paulw11
Ja, ich bekomme einen Nullwert vom Delegaten –