今日「UIRefreshControl」を使い始めたばかりで、奇妙なことに気づきました。
InterfaceBuilderでUIRefreshControlを作成し、それをすべて接続すると、セレクターが呼び出されることはありません。IBは、コントロールは「値が変更されました」メッセージで起動し、コードを呼び出す必要があると言っていますが、決して起動しません。
だから私はInterfaceBuilderでこれを行うのをやめ、コードでこれを行うことにしました。行が多すぎません。したがって、このコードを「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〜2秒しか表示されません。しかし、それは奇妙に見えます。
したがって、質問は次のとおり
です。1.これは、Interface Builderからのみコントロールを接続できない既知のバグですか?
2.このコントロールを、ユーザーが実際に見たいと思うまで表示せずに、テーブルビューコントローラーに追加する方法はありますか?