2016-03-03 62 views
0

我正在製作應用程序,它有一個tableviw,當第一次調用表顯示數據完美,但當第二次時,我打開滑出菜單,然後單擊按鈕API再次調用,並在自我線崩潰.tableView.reloadData()。 這裏是我在MainViewController應用程序獲取崩潰時重新載入tabledata

func web() 
{ 
    let url = "http://\(urlString)\(slug)" 
    print(url) 
    print(slug) 
    request(.GET, url, parameters: nil, encoding: .JSON).responseJSON { (response:Response<AnyObject, NSError>) -> Void in 
     if (response.result.value != nil) 
     { 
      print(response.result.value) 
      self.arraypost.removeAllObjects() 
      print(self.arraypost) 
      self.arraypost = (response.result.value)?.valueForKey("posts") as! NSMutableArray 
      print(self.arraypost) 

      dispatch_async(dispatch_get_main_queue(), {() -> Void in 
       self.tableView.reloadData() 
      }) 


     } 
    } 
} 

代碼在這裏是mycode的在RightViewController

@IBAction func btnmotogp(sender: AnyObject) { 
    slug = motogp 
    MainViewController().web() 

    self.slideMenuController()?.closeRight() 


} 

正好卡在這個問題上浪費太多時間在此。

這是實現代碼如下

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return arraypost.count 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell : mainviewcell = tableView.dequeueReusableCellWithIdentifier("mainviewcell") as! mainviewcell 
    let dic : NSDictionary = arraypost.objectAtIndex(indexPath.row) as! NSDictionary 
    cell.lbldate.text = dic["date"] as? String 
    cell.lblsummary.text = dic["excerpt"] as? String 
    cell.lbltitle.text = dic["title"] as? String 

    let myarray : NSMutableArray = (dic["attachments"] as? NSMutableArray)! 
    print(myarray) 
    let dic1 : NSDictionary = myarray.objectAtIndex(0) as! NSDictionary 
    print(dic1) 
    var newimage : String = "" 


    newimage = dic1["url"] as! String 
    print(newimage) 
    if (newimage.characters.count != 0) 
    { 
     ImageLoader.sharedLoader.imageForUrl(newimage) { (images, url) ->() in 

      if (images != nil) 
      { 
       cell.image1.image = images! 
      } 

     } 
    } 


    return cell 
} 

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    let storyboard = UIStoryboard(name: "SubContentsViewController", bundle: nil) 
    let subContentsVC = storyboard.instantiateViewControllerWithIdentifier("SubContentsViewController") as! SubContentsViewController 
    self.navigationController?.pushViewController(subContentsVC, animated: true) 
} 
+1

什麼是崩潰? – Paulw11

+0

它的一個致命錯誤:意外地發現零,同時展開一個可選值@ Paulw11 –

+1

你是強制unwarping的東西用'!',不使用'如果let ...',並且不應該調用不同控制器的函數,委託要求'MainViewController'來做到這一點,也許你的'tableView'沒有合適的數據源,但是你仍然要更新它 – Tj3n

回答

0

代碼這是一個有點難以找出什麼是在哪裏以及如何正是你使用它,但我的猜測是,當你調用MainViewController().web()的MainViewController的觀點是不是在視圖層次結構,所以tableView既不是。這給我們提供了當你調用表來重新加載時的情況,但是它沒有被實例化,所以它崩潰了。確保視圖控制器已正確添加。

如果您可以關心塊可以創建的可能的保留週期,那也不錯:)