程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> 復選-swift tableview 刷新

復選-swift tableview 刷新

編輯:編程解疑
swift tableview 刷新

小弟在編寫復選列表(用tableview 的每一個 cell 裝每一個選項)時遇到刷新問題,點擊刷新後,被選中的文件若上傳成功,則在列表中不再顯示,但是上傳成功後刷新列表,原本存在的被選中的cell(用image標識)中的image下移到另一個cell中了。求大神幫我解決這個問題!!!!

或者求大神提供一個“復選列表”帶自動刷新的可行方法!求大神幫忙小弟度過這個緊急時刻!

最佳回答:


好吧,最後我解決了這個問題,方案如下:
1.設置一個全局變量flag,當做刷新的標志位,
2.確定總共上傳x個文件,把標志位置成x,每上傳成功一次,標志位自減1;
3因為 tableview?.reloadData() 時,有多少個cell,便會調用多少次 tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell ,所以 每加載一個cell時都可判斷一下 if(flag >=0){把cell的“button圖片” —> “未選中button圖片”,flag--;}else{flag = -1}

4.其余時候下的刷新(比如說下拉刷新)flag < 0, 並不會更新每個cell中button的圖片。

5.如果我解釋的不清楚,或者有什麼更好的方式,請聯系我!

部分代碼如下:(有很多函數都是自己寫的,看起來比較亂,請見諒 )

/*上傳*/
func uploadClicked(){
    prepareForUpload()
    uploadAudioAndImage(uploadAudioID, ID : ID , insuranceID: insuranceID, idataIcard: idataIcard, userCode: userCode)
    uploadVideo(uploadVideoID,  ID : ID , insuranceID: insuranceID, idataIcard: idataIcard, userCode: userCode)
    timer = NSTimer.scheduledTimerWithTimeInterval(1,
        target:self,selector:Selector("tickDown"),
        userInfo:nil,repeats:true)
    upload.enabled = false
    upload.setTitle("正在上傳", forState: UIControlState.Normal)

    coverView = UIView(frame: CGRectMake(0, 130, self.view.frame.size.width, self.view.frame.size.height))
    coverView!.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.1)
    self.view!.addSubview(coverView!)
}

/*輪詢是否上傳完成*/
func tickDown(){
    let defaults = NSUserDefaults.standardUserDefaults()
    let temp = defaults.integerForKey("temp_done")
    if(temp == 0){
        upload.enabled = true
        upload.setTitle("上傳資料", forState: UIControlState.Normal)
        coverView?.removeFromSuperview()
        rfClick()
        timer.invalidate()
    }
}

        /*上傳完成後,刷新頁面*/
func rfClick(){
    audioID = searchAudioID(insuranceID)
    videoID = searchVideoID(insuranceID)
    //maintableview?.reloadData()
    dispatch_async(dispatch_get_main_queue(), {
        self.flag = self.audioID.count + self.videoID.count
        self.maintableview?.reloadData()
        })
}

//flag 為全局變量,常態時置成 -1(上傳完成,flag置成 -1)
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell:(UITableViewCell) = UITableViewCell(style:.Default,reuseIdentifier:"Identifier") as UITableViewCell
if(indexPath.section==0){
let cell:audioCheckboxTableViewCell = maintableview!.dequeueReusableCellWithIdentifier("audioCheckboxTableViewCell", forIndexPath: indexPath) as! audioCheckboxTableViewCell
cell.audioName.text = (audioID[indexPath.row]["audio_id"]as? String)!
cell.tag = 0
if flag > 0
{
flag--
cell.butSelect.setImage(UIImage(named: "fx_02"), forState: UIControlState.Normal)
}else{flag = -1}
cell.textLabel!.font = UIFont.systemFontOfSize(14)
cell.selectionStyle = UITableViewCellSelectionStyle.None
return cell
}
if(indexPath.section==1){
let cell:videoCheckboxTableViewCell = maintableview!.dequeueReusableCellWithIdentifier("videoCheckboxTableViewCell", forIndexPath: indexPath) as! videoCheckboxTableViewCell
cell.videoName.text = (videoID[indexPath.row]["VIDEO_ID"]as? String)!
cell.tag = 1
if flag > 0
{
flag--
cell.butSelect.setImage(UIImage(named: "fx_02"), forState: UIControlState.Normal)
}else{flag = -1}
//cell向右箭頭
cell.accessoryType = UITableViewCellAccessoryType.None
cell.textLabel!.font = UIFont.systemFontOfSize(14)
cell.selectionStyle = UITableViewCellSelectionStyle.None
return cell
}
//cell向右選擇箭頭
cell.accessoryType = UITableViewCellAccessoryType.None
cell.textLabel!.font = UIFont.systemFontOfSize(14)
cell.selectionStyle = UITableViewCellSelectionStyle.None
return cell
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved