2014-01-21 3 views
6

Я использую MWPhotoBrowser для своего приложения. Мне нужно предоставить функции удаления моим пользователям. Можно ли каким-либо образом реализовать удаление определенной фотографии или нескольких фотографий?MWPhotoBrowser - как реализовать функцию удаления фотографий?

Необходима быстрая помощь.

ответ

3

enter image description here

Я сделал это в стрижа, добавив это расширение из-за пределов библиотеки:

extension MWPhotoBrowser { 

    public override func viewWillLayoutSubviews() { 
     super.viewWillLayoutSubviews() 

     if let _ = valueForKey("_gridController") as? MWGridViewController { 
      let leftButtonItem = editButtonItem() 
      //leftButtonItem.tintColor = QorumColors.ThemeWhite 
      navigationItem.leftBarButtonItem = leftButtonItem 
     } else { 
      navigationItem.leftBarButtonItem = nil 
     } 
    } 

    public override func setEditing(editing: Bool, animated: Bool) { 
     super.setEditing(editing, animated: animated) 

     if editing { 
      navigationItem.leftBarButtonItem?.title = "Delete" 
      //navigationItem.leftBarButtonItem?.tintColor = QorumColors.Nickname 

      displaySelectionButtons = true 
      title = "Delete Photos" 

      let gridController = valueForKey("_gridController") as! MWGridViewController 
      gridController.selectionMode = displaySelectionButtons 
      gridController.collectionView!.reloadData() 
     } else { 
      let nav = self.navigationController as! TempPresentVC 
      let photosToDelete = nav.selectedPhotos 

      let afterButtonPress = { 
       //self.navigationItem.leftBarButtonItem?.tintColor = QorumColors.ThemeWhite 

       self.displaySelectionButtons = false 
       self.updateNavigation() 

       let gridController = self.valueForKey("_gridController") as! MWGridViewController 
       gridController.selectionMode = self.displaySelectionButtons 
       gridController.collectionView!.reloadData() 
      } 

      guard photosToDelete.count > 0 else { 
       afterButtonPress() 
       return 
      } 

      let title = "Delete Photo" 
      let message = "Are you sure you want to delete these photos?" 
      let action = "Delete" 
      let cancelAction = "Cancel" 

      let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert) 
      let declineButton = UIAlertAction(title: cancelAction, style: .Default, handler: { (action: UIAlertAction) in 
       afterButtonPress() 
      }) 
      let acceptButton = UIAlertAction(title: action, style: .Default, handler: { (action: UIAlertAction) in 
       afterButtonPress() 
      }) 
      alert.addAction(declineButton) 
      alert.addAction(acceptButton) 
      UIApplication.topMostController().presentVC(alert) //private lib 
     } 
    } 
} 



class TempPresentVC: UINavigationController, MWPhotoBrowserDelegate { 
    var selectedPhotos = [Int]() 

    func photoBrowser(photoBrowser: MWPhotoBrowser!, photoAtIndex index: UInt, selectedChanged selected: Bool) { 
     if selected { 
      selectedPhotos.append(index.toInt) 
     } else { 
      selectedPhotos.removeObject(index.toInt) 
     } 
    } 
} 

Это не позволит вам удалить фотографию в режиме одиночного фото вид, но начиная из этой базы кода эта часть будет легко реализована.

Остерегайтесь, некоторые вещи, которые я использую внутри, являются частными функциями, которые я написал в других классах, но они должны быть ясными.

Смежные вопросы