条件prepareForSegue与swift

时间:2015-07-24 11:31:54

标签: ios swift

我需要一个有条件的塞格。可能的选择是:

  • link有子链接 - >我应该重新加载uicollectionview。
  • 链接没有子链接 - >转到其他窗口。

这是我的代码。

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函数但仍然转到其他窗口时。

非常感谢你的朋友们!

1 个答案:

答案 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)
}