2016-09-17 73 views
0

我有一個加載自定義表格視圖單元的表格視圖。在表格視圖單元格中,我有一個圖像視圖,以及其他控件。的問題是,表視圖口吃滾動時,即使正在從高速緩存或文件目錄讀取的圖像(使用未進行任何差別)桌面視圖與滾動圖像時出現斷斷續續的情況

下面是用於顯示錶視圖細胞的代碼:

func tableView(tableView: UITableView, 
       willDisplayCell cell: UITableViewCell, 
           forRowAtIndexPath indexPath: NSIndexPath) { 

if cell.isKindOfClass(EventsTableViewCell) { 

    let eventCell = cell as! EventsTableViewCell 

    let list = self.eventsList 

    if list.count > 0 { 

     let event = list.objectAtIndex(indexPath.row) as! Event 


//other cell labels configured here 

     //imageCache is NSCache instance 
     if let imageData = self.imageCache.objectForKey(event.name) as? NSData { 

      let image = UIImage(data: imageData) 

      eventCell.eventImageView.image = image 
     } 
     else if event.imageUrl != "" { 

      eventCell.setImageToCell(event) 
     } 


    } 

} 

} 

func tableView(tableView: UITableView, 
       cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

let cellIdentifier = "eventCell" 

var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) 

if cell == nil { 

    let nibCollection = NSBundle.mainBundle().loadNibNamed("EventsTableViewCell", 
                  owner: nil, 
                  options: nil) 

    cell = (nibCollection as NSArray).objectAtIndex(0) as? EventsTableViewCell 
} 

cell?.selectionStyle = .None 

return cell! 
} 

EventsTableViewCell

func setImageToCell(event: Event) { 

     //apply placeholder image. This image will be replaced if an image is found for the particular event. 

     if event.image != nil { 

      dispatch_async(dispatch_get_main_queue(), { 

        self.eventImageView.image = event.image 
      }) 
     } 
} 

因此,即使沒有任何圖像正在這裏下載,表格視圖仍然不能妥善處理滾動。我不確定我做錯了什麼。圖像的大小是否可以成爲問題?

+0

圖像大小是多少? – skymook

+0

它們的大小各不相同..它們的範圍從大約100 KB到2 MB – StudentX

+0

2MB!是相當大的尺寸,你可能會考慮降低圖像的大小。但是,我認爲你的問題在別的地方。可能會在cellForRowAtIndexPath幫助你設置單元格中的圖像。您還可以嘗試將圖像從緩存中讀取到dispatch_async(dispatch_get_main_queue(),{})中,並查看它是否有效。 –

回答

-2

as @SanchitKumarSingh said..your代碼加載圖像到UIImageView必須去在cellForRowAtIndexPath方法。

相關問題