Как добавить UIRfreshControl

Я хочу добавить UIRefreshControl в свое приложение, которое извлекает записи из базы данных при извлечении таблицы. Я сделал следующий код, но он дает мне ошибку, например

2014-08-06 12:31:56.263 QuizUsindDB[1183:60b] -[ScoreViewController readScoreFromDatabase]: unrecognized selector sent to instance 0x8d3d8e0
2014-08-06 12:31:56.266 QuizUsindDB[1183:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ScoreViewController readScoreFromDatabase]: unrecognized selector sent to instance 0x8d3d8e0'
*** First throw call stack:
(
    0   CoreFoundation                      0x018f81e4 __exceptionPreprocess + 180
    1   libobjc.A.dylib                     0x016778e5 objc_exception_throw + 44
    2   CoreFoundation                      0x01995243 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275
    3   CoreFoundation                      0x018e850b ___forwarding___ + 1019
    4   CoreFoundation                      0x018e80ee _CF_forwarding_prep_0 + 14
    5   libobjc.A.dylib                     0x0168982b -[NSObject performSelector:withObject:] + 70
    6   UIKit                               0x003393b9 -[UIApplication sendAction:to:from:forEvent:] + 108
    7   UIKit                               0x00339345 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 61
    8   UIKit                               0x0043abd1 -[UIControl sendAction:to:forEvent:] + 66
    9   UIKit                               0x0043afc6 -[UIControl _sendActionsForEvents:withEvent:] + 577
    10  UIKit                               0x0043ac06 -[UIControl sendActionsForControlEvents:] + 48
    11  UIKit                               0x00a227e9 -[UIRefreshControl _setRefreshControlState:notify:] + 404
    12  UIKit                               0x00a22650 -[UIRefreshControl setRefreshControlState:] + 48
    21  CoreFoundation                      0x0195d43e __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 14
    22  CoreFoundation                      0x0189e5cb __CFRunLoopRun + 1963
    23  CoreFoundation                      0x0189d9d3 CFRunLoopRunSpecific + 467
    24  CoreFoundation                      0x0189d7eb CFRunLoopRunInMode + 123
    25  GraphicsServices                    0x038ec5ee GSEventRunModal + 192
    26  GraphicsServices                    0x038ec42b GSEventRun + 104
    27  UIKit                               0x00337f9b UIApplicationMain + 1225
    28  QuizUsindDB                         0x0001038d main + 141
    29  libdyld.dylib                       0x01e41701 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

Код для UIRfreshControl приведен выше:

-(void)pullToRefresh
{
    self.refreshControl = [[UIRefreshControl alloc] init];
    self.refreshControl.tintColor = [UIColor blackColor];
    [self.refreshControl addTarget:self action:@selector(readScoreFromDatabase)
                  forControlEvents:UIControlEventValueChanged];
    [self.myTable addSubview:self.refreshControl];
    [self.refreshControl endRefreshing];

}

Я вызвал [self pullToRefresh] в viewDidLoad.

У меня есть приведенный выше код для инициализации и вызова селектора для обновления таблицы. Я не могу распознать ошибку, может ли кто-нибудь указать мне на ошибку.


person Ankit Gohel    schedule 06.08.2014    source источник
comment
В журнале говорится, что метод readScoreFromDatabase не существует, можете ли вы дважды проверить свой метод в self с тем же написанием, и в объявлении метода нет переменной аргумента.   -  person Adil Soomro    schedule 06.08.2014


Ответы (1)


Измените эту строку:

[self.refreshControl endRefreshing];

К этому:

[self.refreshControl beginRefreshing];

Метод endRefreshing следует вызывать после того, как табличное представление завершит перезагрузку данных, где это необходимо.

Кроме того, в журнале сбоев указано, что ваша функция -[ScoreViewController readScoreFromDatabase]: не существует.

person rebello95    schedule 06.08.2014
comment
Это дает мне ошибку, например: «Нет видимого @interface для «UIRefreshControl» объявляет селектор «startRefreshing» - person Ankit Gohel; 06.08.2014
comment
Существует также проблема с методом, который вы вызываете. - person rebello95; 06.08.2014
comment
ScoreViewController вызывает метод readScoreFromDatabase. Убедитесь, что функция существует. - person rebello95; 06.08.2014