2013-11-26 3 views
0

У меня есть UIViewController с UITableView как подвью. Я пытаюсь добавить ссылку на обновление на столе.UIRefreshControl без UITableViewController, не вызывающий селектор

После некоторых примеров и обсуждений, которые я нашел here, у меня есть отображение UIRefresh, но оно никогда не вызывает селектор. Я не получаю уведомление о том, что действие тяги произошло.

Я не могу использовать UITableViewController в качестве основного контроллера, поскольку мне нужно добавить фиксированную кнопку в нижней части экрана.

У меня такое чувство, что у меня что-то не хватает, что, надеюсь, очевидно для кого-то другого.

@interface ActivityViewController()<UITableViewDelegate, UITableViewDataSource, UIScrollViewDelegate> 
@end 



- (void)viewDidLoad{ 

    [super viewDidLoad]; 

    _myTableView.delegate = self; 

    _myTableView.dataSource = self; 

    _tableViewController = [UITableViewController new]; 

    _tableViewController.tableView = _myTableView; 

    [self addChildViewController:_tableViewController]; // Not sure this is necessary 

    _refreshControl = [UIRefreshControl new]; 

    [_refreshControl addTarget:self action:@selector(loadMoreData) forControlEvents:UIControlEventValueChanged]; 

    _tableViewController.refreshControl = _refreshControl; 

} 

- (void)loadMoreData{ 

    NSLog(@"loadMoreData"); 
} 

ответ

1

Хорошо это сейчас работает. Но я не уверен, почему! Я немного отказался от этого, изменил другие вещи, которые нужно было сделать, а затем снова проверил прошлой ночью, и он работал. Я признаю, что я немного смущен. Я использовал приведенный ниже код из этого ответа, приведенного в предыдущих сообщениях here, как я это сделал несколько дней назад. Так что спасибо за время и вклад. Он работает отлично, как и ожидалось.

// Refresh control 
UITableViewController *tableViewController = [[UITableViewController alloc] init]; 
tableViewController.tableView = self.myTableView; 

self.refreshControl = [[UIRefreshControl alloc] init]; 
[self.refreshControl addTarget:self action:@selector(loadMoreData) forControlEvents:UIControlEventValueChanged]; 
tableViewController.refreshControl = self.refreshControl; 
0

Вы должны создать экземпляр tableviewcontroller с

[UITableViewController alloc] initWithStyle:(UITableViewStyle) 

использованием new делает Alloc Init, но вы должны использовать назначенный инициализатору

+0

Это не помогло, и на самом деле тогда я UIRefreshController вообще не показывался. Ссылка, добавленная мной в моем первоначальном посте, содержит подробное обсуждение, объясняющее, почему это должно быть сделано так, как я это делал. Просто мой селектор игнорируется .... – Alan

+0

Хорошо, я изменил это, но все же мой селектор - (void) loadMoreData не вызывается. – Alan

+0

Я не знаю. возможно, попробуйте сделать ваш refreshcontroller переменной экземпляра и/или проверить, является ли он нулем в какой-то момент, и вам не нужно [self addChildViewController: _tableViewController]; // Не уверен, что это необходимо –

Смежные вопросы