Próbuję wdrożyć UIRefreshControl
w mojej aplikacji. Mam plik xib i dodałem UITableViewController
do pustego pliku nib i ustawiłem właściwość refresh na "enabled". Dodałem również kod do viewDidLoad
i niestandardową metodę odświeżania. Problemem jest to, mam błąd nie mogę znaleźć żadnych informacji na temat .... w moim viewDidLoad
uzyskać „obiekt«refreshControl
»nie został odnaleziony na obiekcie typu ViewController
”UIRefreshControl issues
- (void)viewDidLoad{
[super viewDidLoad];
self.myTableView =
[[UITableView alloc] initWithFrame:self.view.bounds
style:UITableViewStyleGrouped];
self.myTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleHeight;
self.myTableView.delegate = self;
self.myTableView.dataSource = self;
[self.view addSubview:self.myTableView];
UIRefreshControl *refresh = [[UIRefreshControl alloc] init];
refresh.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull to Refresh"];
[refresh addTarget:self action:@selector(refreshView:) forControlEvents:UIControlEventValueChanged];
self.refreshControl = refresh;
}
-(void)refreshView:(UIRefreshControl *)refresh {
refresh.attributedTitle = [[NSAttributedString alloc] initWithString:@"Refreshing data..."];
// custom refresh logic would be placed here...
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMM d, h:mm a"];
NSString *lastUpdated = [NSString stringWithFormat:@"Last updated on %@",
[formatter stringFromDate:[NSDate date]]];
refresh.attributedTitle = [[NSAttributedString alloc] initWithString:lastUpdated];
[refresh endRefreshing];
}
Nie mam pojęcia, dlaczego tak właściwość nie jest dostępna .... czego mi brakuje?
Wygląda na to, że muszę dziedziczyć po UITableViewController
w moim pliku ViewController.h
. Jeśli mam już UITableView
, jak mogę dziedziczyć z obu? Jeśli mogę zmienić kod z ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
do ViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource>
następnie pojawia się błąd:
error: NSInternalInconsistencyException',
reason: '-[UITableViewController loadView] loaded the "ViewController_iPhone" nib but didn't get a UITableView.'
Jest to nieobsługiwane i może zostać złamane w przyszłej wersji systemu iOS. Jedynym obsługiwanym sposobem użycia 'UIRefreshControl' jest z' UITableViewController'. –
@ACB, dokładnie to, czego potrzebowałem !!! Dzięki za miliony. Chciałbym móc dać ci więcej rekwizytów! – brianhevans
Tak, możesz mieć UIRefreshControl na klasie UIViewController z UITableView i, które zostały dodane ręcznie. Komentarze inne odpowiedzi mogą być prawdziwe (nie jest to zgodne z dokumentami), ale ten mały hack działa na iOS6. –