我需要一个有条件的塞格。可能的选择是:
这是我的代码。
override func viewDidLoad() {
super.viewDidLoad()
self.loaddata(self.url) }
func loaddata(url: String){
var loaded: Bool = false
api.remoteUrl = url + self.end_url
println(api.remoteUrl)
api.getData({data, error -> Void in
println("entro aqui")
if (data != nil){
println(data)
// Fix possible error if no "results" key
if let results = data["results"].array {
self.delete_subcategory_withoutvideos(results)
}
dispatch_async(dispatch_get_main_queue()) {
self.collectionView.reloadData()
//self.colle ctionView(<#collectionView: UICollectionView#>cellForItemAtIndexPath: <#NSIndexPath#>)
}
println("Data reloaded")
} else {
println("api.getData failed")
println(error)
}
//println(self.result_category)
loaded = true
self.collectionView.reloadData()
})
while (!loaded){}
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let cell = sender as! UICollectionViewCell
let index = self.collectionView!.indexPathForCell(cell) // this return -> NSIndexPath?
if (self.result_category[index!.row]["children"].string != nil){
self.loaddata(self.result_category[index!.row]["children"].string!)
}else{
let vc : VideosViewController = segue.destinationViewController as! VideosViewController
vc.id_category = self.result_category[index!.row]["id"].intValue
println(vc.id_category)}
}
使用此代码,当链接有一个子链接调用loaddata函数但仍然转到其他窗口时。
非常感谢你的朋友们!
答案 0 :(得分:1)
您的代码没有问题。但是你可能不知道当你试图打电话或执行执行segue或推送到其他窗口时,准备segue总是打电话。您的问题有一个解决方案,使用cutom方法来检查您的状况。将以下代码放在自定义方法中。
func my_Function
{
let cell = sender as! UICollectionViewCell
let index = self.collectionView!.indexPathForCell(cell) // this return -> NSIndexPath?
if (self.result_category[index!.row]["children"].string != nil){
self.loaddata(self.result_category[index!.row]["children"].string!)
}else{
let vc : VideosViewController = segue.destinationViewController as! VideosViewController
vc.id_category = self.result_category[index!.row]["id"].intValue
println(vc.id_category)
}