2013-12-18 4 views
1

Я создаю приложение, которое нужно обновить, потянув, а затем снова запустите ViewDidLoad. Так что я знаю, что могу использовать UIRefreshControl, но я могу найти код, который используется в UITableViewController. У кого-нибудь появилась идея о том, как использовать UIRefreshControl в UIView, а не в UITableView. Спасибо заранее.Xcode UIRefreshControl on UIView

ответ

-2

UIRefreshControl не предназначен для использования без стола. Эта нота the documentation специально предостерегает от такого использования:

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

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

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

+0

«Приложение должно знать, когда доступны новые данные». О, действительно, спасибо за информацию об UIRefreshControl, но ваши редакционные комментарии ушли. Если это правда, то почему все главные приложения из Apple, и у меня есть контроль обновления, чтобы получить обновленные данные? Кроме того, я думаю, что большинство пользователей любят иметь этот контроль, чтобы обновлять свои данные. Я знаю, что знаю. – Harris

+0

@ Харрис Возможно, просто разница в мнениях здесь, но в целом я думаю, что приложение, которое всегда обновляется без необходимости вмешательства пользователя, лучше, чем тот, где пользователь должен что-то сделать, чтобы получить данные, которые не являются устаревшими. icker app или приложение для погоды, где пользователь должен запрашивать последние данные? Это может быть не всегда желательно обновлять без явного действия пользователя, но это лучше, если это имеет смысл. Что касается приложений Apple: когда я создаю новый документ в Pages на моем Mac, он появляется более или менее мгновенно на моем iPad - обновление не требуется. – Caleb

-1

Очень легко: Держите контроль как amember или свойства:

UIRefreshControl *_refreshControl; 

Добавить это ваш метод viewDidLoad: (. Просто добавить элемент управления в Tableview убедитесь, что Tableview не ноль конечно).

_refreshControl = [[UIRefreshControl alloc] init]; 
[_refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged]; 
[_tableView insertSubview:_refreshControl atIndex:0]; 

реализовать метод обновления:

- (void)refresh:(UIRefreshControl *)refreshControl { 
    [self reloadData]; 
    //Don't forget to stop the refreshing animation after data reloads. 
    [_refreshControl endRefreshing]; 
} 
+0

Я знаю это, но проблема в том, что я не использую TableView, поэтому код не будет работать: (... – Ruub020

+3

ah извините, но вы можете использовать это также без UITableViewController. Попробуйте добавить пустой tableView в качестве subview и использовать тот же код. – Lirik

1

попробовать это ...

[myView setNeedsDisplay]; 

это будет перезагрузить ваш контроллер представления. вы можете поместить это в метод и вызвать его во время pull для обновления ... Надеюсь, это вам поможет. Счастливое кодирование;)