2017-09-21 15 views
8

W iOS 10, użyłem, aby rozpocząć odświeżenie UIRefreshControl (pokazać kontrolę odświeżania programowo) programowo jak ten:iOS 11 beginRefreshing programowo z dużym tytuł na pasku nawigacyjnym

self.tableView.setContentOffset(CGPoint(x: 0, y: - self.refreshControl.bounds.height), animated: false) 
self.refreshControl.beginRefreshing() 

Ale teraz z iOS 11, że kod nie robi Działa, robi tylko bałagan o rozmiarze UINavigationController, a UIRefreshControl nie pojawia się.

Jak mogę programowo odświeżyć program UIRefreshControl (programowo wyświetlić program odświeżający), używając prefersLargeTitles z iOS 11?

+0

Jako, że [doc] (https://developer.apple.com/documentation/uikit/uirefreshcontrol) powiedział: 'Ponieważ kontrolka odświeżania jest specjalnie zaprojektowana do użycia w widoku tabeli, który jest zarządzany przez kontroler widoku tabeli, używając w innym kontekście może powodować niezdefiniowane zachowanie. ", spróbuj użyć' UITableViewController' zamiast tego. – liushuaikobe

+0

jak dotąd szczęście w rozwiązaniu tego problemu? Napotkałem ten sam problem i od czasu do czasu działa zgodnie z oczekiwaniami, gdy uruchamiam moją aplikację w symulatorze, ale kiedy następnym razem uruchomię aplikację, ponownie przesunie się pasek nawigacji ... – xxtesaxx

+0

@xxtesaxx Nie mogłem tego rozwiązać . Postanowiłem przenieść wszystkie moje kontrolery UIViewController do kontrolera UITableViewController i zaczęło się lepiej zachowywać. – pableiros

Odpowiedz

0

UIRefreshControl jest przeznaczony do użytku z UITableViewController. Używanie jej w systemach UITableView, które nie są w wersji UITableViewController, może prowadzić do niezdefiniowanego zachowania.

Chociaż nie zawsze jest to możliwe, aby mieć kontroler widoku być podklasą UITableViewController, można zawsze mieć UIViewController podklasę, która dodaje do UITableViewController podklasę jako dziecko. W ten sposób można korzystać z UIRefreshControl i innych udogodnień, które zapewnia UITableViewController, a jednocześnie w razie potrzeby można używać podklas UIViewController.

Powiązane problemy