2014-11-28 13 views
9

muszę pokazać UIRefreshControl na dole UITableView jak w następujących bibliotek Objective-C:Jak pokazać „pull-do-Refresh” elementu na dole UITableView w Swift

ale używam Swift i zauważyłem pewne problemy podczas korzystania "Bridging-Header.h" plik z tych bibliotek.

Jaki jest alternatywny i najprostszy sposób na uzyskanie takiego zachowania?

Z góry dziękuję.

+0

Używam drugą bibliotekę z Swift oraz bez żadnego problemu. Jakie są twoje problemy? Być może będziesz musiał opracować więcej. –

Odpowiedz

0
var refreshControl: UIRefreshControl! 

//Pull to refresh 
self.refreshControl = UIRefreshControl() 
self.refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh") 
self.refreshControl.addTarget(self, action: "pullToRefresh:", forControlEvents: UIControlEvents.ValueChanged) 
self.messageTableView.addSubview(refreshControl) 

//Refresh the table view (pull to refresh) 
func pullToRefresh(sender:AnyObject) 
{ 
    print("pull to refresh...") 
} 
+0

Nie to, na co FrozenHeart się wkurzył, prawda? Jest to standardowa kontrola odświeżania u góry. – fabian789

+0

Przepraszam, mój błąd. Ja też tego szukam .... znasz odpowiedź? –

+0

Pracuję na własnym wyciągnąć do odświeżenia kodu. –

0

mam na ten sam problem w moim projekcie i znalazł this answer. Możesz dodać instancję UIActivityIndicatorView na dole tabeli, początkowo ukrytą, a po wejściu w powyższy warunek if, odkryj go i rozpocznij animację.

Może zajść potrzeba zmiany dolnej granicy stołu, dodania do niej wysokości "1 komórki" podczas jej ładowania i umieszczenia jej z powrotem, gdy zakończy się również w warunkach if.

w Swift 3:

func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { 

    // Use this 'canLoadFromBottom' variable only if you want to load from bottom iff content > table size 
    let contentSize = scrollView.contentSize.height 
    let tableSize = scrollView.frame.size.height - scrollView.contentInset.top - scrollView.contentInset.bottom 
    let canLoadFromBottom = contentSize > tableSize 

    // Offset 
    let currentOffset = scrollView.contentOffset.y 
    let maximumOffset = scrollView.contentSize.height - scrollView.frame.size.height 
    let difference = maximumOffset - currentOffset 

    // Difference threshold as you like. -120.0 means pulling the cell up 120 points 
    if canLoadFromBottom, difference <= -120.0 { 

     // Save the current bottom inset 
     let previousScrollViewBottomInset = scrollView.contentInset.bottom 
     // Add 50 points to bottom inset, avoiding it from laying over the refresh control. 
     scrollView.contentInset.bottom = previousScrollViewBottomInset + 50 

     // loadMoreData function call 
     loadMoreDataFunction(){ result in 
      // Reset the bottom inset to its original value 
      scrollView.contentInset.bottom = previousScrollViewBottomInset 
     } 
    } 
} 
Powiązane problemy