今天刚开始使用“UIRefreshControl”,发现了一些奇怪的东西。
如果我在 InterfaceBuilder 中创建了 UIRefreshControl,并将其全部连接起来,我的选择器永远不会被调用。IB 说控件应该触发“值已更改”消息,并且应该调用我的代码,但从不调用。
所以我放弃了在 Interface Builder 中执行此操作,而是决定在代码中执行此操作。没有太多的行。所以我把这段代码放在我的“viewDidLoad”例程中:
self.refreshControl = [UIRefreshControl new];
[self.refreshControl addTarget:self action:@selector(doStuff:) forControlEvents:UIControlEventValueChanged];
NSMutableParagraphStyle* paragraphStyle = [NSMutableParagraphStyle new];
paragraphStyle.alignment = NSTextAlignmentCenter;
self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull to refresh" attributes:@{NSParagraphStyleAttributeName : paragraphStyle}];
它画得很好,但是当视图首次出现时刷新控件是可见的。我希望它在用户实际拉下桌子之前不可见。我正在调用 Web 服务,等待结果返回,然后填充表格。因此,您只能看到一两秒钟的控件。但它看起来很奇怪。
所以,问题是:
1. 这是一个已知的错误,您不能单独从 Interface Builder 连接控件吗?
2. 有没有办法将此控件添加到 table-view 控制器,直到用户真正想要看到它才出现?