0

そのため、iOS アプリの自動テストを実装していて、奇妙な問題に遭遇しました。

私が使用しているテスト フレームワーク (Frank) では、アクセシビリティ ラベルに基づいてビュー/ボタン/すべてをタッチしようとします。UITableViewsこれは、キャッシュと再利用の方法を除いて、うまく機能しUITableViewCellsます。テーブルからセルを「削除」すると、テーブル キャッシュ システムがセルを非表示に切り替えます。しかし、それは再利用されるのを待っているままであり、私のフレームワークはまだそれを見ることができ、それが問題を引き起こしています.

では、質問: UITableView に、削除された/キャッシュされたすべてのセルを強制的に解放させて、ビュー階層の一部にならないようにするにはどうすればよいですか?

4

2 に答える 2

3

このトリックは役立つかもしれません:

while([tableView dequeueReusableCellWithIdentifier:cellId]!=nil);

もちろん、可能な限り手動で繰り返す必要がありますcellId
キャッシュされたセルはビュー階層の一部ではないことに注意してください。

もう1つのオプション。UITableViewController現在表示されていない場合、didReceiveMemoryWarningメソッドを呼び出すとすべてのが解放されますUITableViewCell

于 2012-10-16T00:06:04.380 に答える
0

In the method - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath, use this:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]`

then check if your cell is nil. If it is, allocate a new instance of the cell.

if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    [cell setDelegate:self];
} 
于 2012-10-16T06:19:10.170 に答える