如何添加 UIRefreshControl

Posted

技术标签:

【中文标题】如何添加 UIRefreshControl【英文标题】:How to add UIRefreshControl 【发布时间】:2014-08-06 07:11:55 【问题描述】:

我想将 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

上面给出了 UIRefreshControl 的代码:

-(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];


我在 viewDidLoad 中调用了 [self pullToRefresh]。

我有上面的代码来初始化和调用选择器来刷新表格。 我无法识别错误,谁能指出我的错误。

【问题讨论】:

日志说,readScoreFromDatabase 方法不存在,您能否仔细检查self 中的方法是否具有相同的拼写,并且方法声明中没有参数变量。 【参考方案1】:

改变这一行:

[self.refreshControl endRefreshing];

到这里:

[self.refreshControl beginRefreshing];

endRefreshing 方法应该在表视图完成重新加载数据后调用。

此外,崩溃日志表明您的 -[ScoreViewController readScoreFromDatabase]: 函数不存在。

【讨论】:

它给了我这样的错误,“UIRefreshControl”没有可见的@interface 声明选择器“startRefreshing” 你调用的方法也有问题。 ScoreViewController 正在调用方法readScoreFromDatabase。确保该函数存在。

以上是关于如何添加 UIRefreshControl的主要内容,如果未能解决你的问题,请参考以下文章

PDF如何添加水印?

苹果cms10如何添加直播?

mfc 如何添加光标

在QGIS中如何添加天地图的WMTS

如何添加环境变量或路径添加到系统的Path里面

MYSQL如何添加索引