微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法处理多选

如何解决无法处理多选

我正在尝试在我的表格视图中使用多项选择(正在编辑)来实现删除操作,该表格视图存储在 Firebase 中,列出了 pdf。但首先,我想确保多项选择是否有效。

即使多选为真并且选择了多个单元格,输出也告诉我只选择了一个单元格。此外,如果选择从第一个单元格开始,则输出(索引)保持为 0。如果选择反向开始,则为 4,3,2,1,0。我需要帮助来处理这个问题。

请看下面的代码。谢谢。

 import UIKit
 import Firebase
 import PDFKit


class IcsViewcontroller: UIViewController,UISearchBarDelegate {

var preImage : UIImage?

let cellSpacingHeight: CGFloat = 20



@IBOutlet weak var searchBar: UISearchBar!


@IBOutlet weak var pdfListView: UITableView!

@IBOutlet weak var spinner: UIActivityIndicatorView!

var pdfList = [pdfClass]()
var searchall = [pdfClass]()
var searching = false

var selectedPdf = [pdfClass]()

override func viewDidLoad() {
    super.viewDidLoad()
    
   
    
    let editButton = UIBarButtonItem(title: "Edit",style: .plain,target: self,action: #selector(showEditing(_:)))
        navigationItem.rightBarButtonItem = editButton
    pdfListView.delegate = self
    pdfListView.dataSource = self
    searchBar.delegate = self

    
        self.pdfListView.isHidden = true
   
   
            
    getPdf()
    
    
  
}



override func prepare(for segue: UIStoryboardSegue,sender: Any?) {
   
   if searching {
        let destination = segue.destination as! PdfKitViewController
        let selectedindexPath = pdfListView.indexPathForSelectedRow
        destination.pdf = searchall[selectedindexPath!.row]
    } else {
        
        let destination = segue.destination as! PdfKitViewController
        let selectedindexPath = pdfListView.indexPathForSelectedRow
        destination.pdf = pdfList [selectedindexPath!.row]
       
        
    }
    
}

@objc func showEditing(_ sender: UIBarButtonItem)
{
   if(self.pdfListView.isEditing == true)
   {
    
       self.pdfListView.isEditing = false
       self.navigationItem.rightBarButtonItem?.title = "Edit"
   }
   else
   {
    self.pdfListView.allowsMultipleSelectionDuringEditing = true
       self.pdfListView.isEditing = true
       self.navigationItem.rightBarButtonItem?.title = "Done"
   }
 }


func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
    
    if searchBar.text == nil || searchBar.text == "" {
               searching = false
           } else {
               searching = true
            
           }
    

}

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
    searching = false
            searchBar.text = ""
            self.pdfListView.reloadData()
   
}

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
   
    searching = false
    
}


func searchBar(_ searchBar: UISearchBar,textDidChange searchText: String) {
    

    
   if searchBar.text == nil || searchBar.text == "" {
        searchall = pdfList
        searching = false
        pdfListView.reloadData()
        
    } else {
        
        searching = true
    searchall = pdfList.filter({($0.pdf_name?.lowercased().prefix(searchText.count))! == searchText.lowercased() })
        pdfListView.reloadData()
    }
    
    
}

func getPdf () {
    
   
    
    spinner.startAnimating()
    let docRef = Storage.storage().reference().child("ICS_Documents")
    
    docRef.listAll{ (result,error ) in
        
        if let error = error {
         
            let alert = UIAlertController(title: "Error",message: "No Database Connection",preferredStyle: UIAlertController.Style.alert)
            alert.addAction(UIAlertAction(title: "OK",style: UIAlertAction.Style.default,handler: nil))
            self.present(alert,animated: true,completion: nil)
            
        }
    
        for item in result.items {
            
            
            let storeageLocation = String( describing : item)
            
            let gsReference = Storage.storage().reference(forURL: storeageLocation)
            
            gsReference.downloadURL{ url,error in

                
                if let error = error{
                    
                    print(error)
                } else {
                    
                    let pdf_name = String( item.name)
                    let pdf_url = url?.absoluteString
                   
                    let thumbnailSize = CGSize(width: 100,height: 100)
                    
                    let thmbnail = self.generatePdfThumbnail(of: thumbnailSize,for: url!,atPage: 0)
                
                    
                        let pdfall = pdfClass(pdf_name: pdf_name,pdf_url: pdf_url!,pdf_preview: thmbnail!)
                    
                    self.pdfList.append(pdfall)
            
                }
                
                dispatchQueue.main.async {
                    self.pdfList.sort{ $0.pdf_name ?? "" < $1.pdf_name ?? ""}
                    self.pdfListView.reloadData()
                    self.spinner.stopAnimating()
                    self.pdfListView.isHidden = false
                    
                }
            }
            
        }
      
        
        
    }
    
    
    
}
func generatePdfThumbnail(of thumbnailSize: CGSize,for documentUrl: URL,atPage pageIndex: Int) -> UIImage? {
    let pdfDocument = PDFDocument(url: documentUrl)
    let pdfDocumentPage = pdfDocument?.page(at: pageIndex)
    return pdfDocumentPage?.thumbnail(of: thumbnailSize,for: PDFdisplayBox.trimBox)
}






}
extension IcsViewcontroller : UITableViewDelegate,UITableViewDataSource {

func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
    
  if searching{
        return searchall.count
    }else {
    return pdfList.count
       
    }
    
}


 
func tableView(_ tableView: UITableView,heightForHeaderInSection section: Int) -> CGFloat {
    return cellSpacingHeight
}

func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    
    let cell = tableView.dequeueReusableCell(withIdentifier: "pdfCell",for: indexPath) as! pdfCellTableViewCell
   
   let varcell : pdfClass
    
    if searching {
       varcell = searchall [indexPath.row]
        
    } else {
       varcell = pdfList [indexPath.row]
        
    }
        cell.configure(name: varcell.pdf_name!,pdfthumbnail: varcell.pdf_preview!)
      
    return cell

    
}
func tableView(_ tableView: UITableView,didSelectRowAt indexPath: IndexPath) {
   
   var indx : pdfClass
    if searching{
        indx = searchall[indexPath.row ]
        
    }else {
        indx = pdfList[indexPath.row]
    
    }
    
    self.selectdeselectcell(tableview: tableView,indexpath: indexPath)
    print("selected")
    
    if pdfListView.isEditing {
        func shouldPerformSegue(withIdentifier identifier: String,sender: Any?) ->  Bool {
           
            return !tableView.isEditing 
        }
    }else{
    performSegue(withIdentifier: "toPdfKit",sender: indx)
    print(indexPath.row)
    }
}
    
    
    func tableView(_ tableView: UITableView,diddeselectRowAt indexPath: IndexPath)    {
        self.selectdeselectcell(tableview: tableView,indexpath: indexPath)
        print("deselected")
    }
    func selectdeselectcell(tableview : UITableView,indexpath : IndexPath){
        if pdfListView.isEditing{
        self.selectedPdf.removeAll()
        if let selected = pdfListView.indexPathForSelectedRow{
           
           print(selected)
       }
        }else {
            return
        }
    }
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。