2017-04-13 5 views
1

UIViewController의 일반 tableView에 refreshControl을 표시 할 수있는 확장 프로그램을 작성했습니다. 아래의 코드는 viewDidLoad()와 완전히 새로 고침 할 때 완벽하게 작동합니다. (관찰 이벤트로 Triggerend)refreshControl 확장이 imagePicker 다음에 회 전자를 표시하지 않습니다.

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

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

관찰자 :

확장 :의 ViewController에서

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() 
    } 
} 

호출 수신자

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

그러나 UIImagePicker를 입력하여 내 앱에 사진을 업로드하고 viewController로 돌아 오면 사진이 성공적으로 업로드 될 때까지 회전하는 프로세스를 다시 트리거해야합니다.

나는 내 코드를 디버깅하고이 방법을 발사되지만 스피너는 뷰 계층의 하위 뷰에서 사라와

나는이 문제를 해결할 수있는 방법을 잘 모르지만 정말 감사 ... 나타나지 않습니다 너희들의 도움이 필요하다!

감사합니다. Kevin.

답변