2014-07-27 3 views
13

Я пытаюсь использовать self.performSegueWithIdentifier, чтобы изменить представление на раскадровке, когда файл JSON загружен удаленно. Для этого я использую «Агент агента Swift» для выполнения HTTP-запроса. Все работает, когда я пишуPerformSegueWithIdentifier не работает

self.performSegueWithIdentifier("toView2", sender: self) 

из «сделанной» переменной. Почему это не работает? Я предполагаю, что это имеет какое-то отношение к «отправителю: я». Но я не знаю, как это решить. Я не получаю никаких ошибок в Xcode. Он просто загружает данные с моего сервера, а затем ничего не происходит ...

@IBAction func goToView2(sender: AnyObject) { 
    let done = { (response: NSHTTPURLResponse!, data: Agent.Data!, error: NSError!) -> Void in 
     self.namesJSON = JSONValue(data!) 
     self.performSegueWithIdentifier("toView2", sender: self) 
    }; 
    Agent.post("http://api.example.com/test.php", headers: [ "Header": "Value" ], 
     data: [ "test": "ok" ], done: done) 
} 
+0

ли закрытие дозвонилось вообще? – Thomas

ответ

30

Отредактировано: (я поместил несколько иной ответ в первую очередь)

В основном, проблема заключается в том, что у вас есть вступил в боковую очередь

и просто получив основную очередь и вызвав segue в ней, она будет работать нормально.

dispatch_async(dispatch_get_main_queue()) { 
    self.performSegueWithIdentifier("toView2", sender: self) 
} 

Надеется, что это работает

+2

Я получаю 'Receiver() не имеет segue с идентификатором' – krummens

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