2017-04-13 1 views
1

Ich schrieb eine Erweiterung, die mir ein RefreshControl auf einer regulären TableView in einem UIViewController zeigen kann. Der folgende Code funktioniert perfekt in der viewDidLoad() und beim Pull zu aktualisieren.refreshControl Erweiterung zeigt Spinner nach imagePicker nicht

extension:

extension UITableView 
{ 
    func findRefreshControl() -> UIRefreshControl? 
    { 
     for view in subviews 
     { 
      if view is UIRefreshControl 
      { 
       print("The refresh control: \(view)") 
       return view as? UIRefreshControl 
      } 
     } 
     return nil 
    } 

    func addRefreshControlWith(sender: UIViewController, action: Selector, view: UIView) 
    { 
     guard findRefreshControl() == nil else { return } 

     let refreshControl = UIRefreshControl() 
     refreshControl.addTarget(sender, action: action, for: UIControlEvents.valueChanged) 

     view.addSubview(refreshControl) 
    } 

    func showRefreshControlWith(attributedTitle: String? = nil) 
    { 
     findRefreshControl()?.attributedTitle = NSAttributedString(string: attributedTitle!) 
     findRefreshControl()?.beginRefreshing() 
    } 

    func hideRefreshControl() 
    { 
     findRefreshControl()?.endRefreshing() 
    } 
} 

aufgerufenen Routinen in Viewcontroller: (Triggerend durch Beobachtung Ereignisse)

private func showLoader() 
    { 
     tableView.showRefreshControlWith(attributedTitle: "Loading Profile".localized()) 
    } 

    private func hideLoader() 
    { 
     tableView.hideRefreshControl() 
    } 

Beobachter:

_ = presenter.profilePictureUploadingPending.skip(first: 1).observeNext { _ in self.showLoader() } 
_ = presenter.profilePictureUploaded.skip(first: 1).observeNext { _ in self.hideLoader() } 

Wenn ich jedoch den UIImagePicker einlege, um ein Foto in meine App hochzuladen und zum viewController zurückzukehren, sollte der Drehvorgang erneut ausgelöst werden, bis das Foto erfolgreich hochgeladen wurde.

gedebuggt ich meinen Code und es ist die Methoden Anheizen aber der Spinner verschwand aus der Sicht Hierarchie Subviews und werde nicht angezeigt ...

Ich bin nicht sicher, wie ich dieses Problem lösen kann, aber ich wirklich zu schätzen jede Hilfe von euch!

Danke, Kevin.

Antwort

0

mit folgenden Lösung Gelöst:

private func showLoader() 
    { 
     DispatchQueue.global(qos: .default).async { 
      DispatchQueue.main.async { 
       self.tableView.contentOffset.x = 1 
       self.tableView.contentOffset.y = -81 
       self.tableView.showRefreshControlWith(attributedTitle: "LOADING_PROFILE".localized()) 
      } 
     } 
    } 
Verwandte Themen