1

これは簡単な質問かもしれません。UITableViewがあり、各セルにUIImageViewが含まれています。私が達成したいのは

if(is under the editing mode)//Hide UIImageView
if(not in the editing mode)//Show UIImageView

タグを使用してそれらのUIImageViewにアクセスしようとしましたが、うまくいきませんでした。私にとっての主なトリックは、それらの画像にアクセスする方法です。

これをどのように行うことができますか?タグを使用しますか?親ビュー?どうもありがとう : )

4

3 に答える 3

0

UITableViewをサブクラス化し、メソッドをオーバーライドできます

- (void)setEditing:(BOOL)editing animated:(BOOL)animated

次に、ifelseブロックを中に入れることができます。

PS:スーパークラスのメソッドを呼び出すことを忘れないでください

image view.egのhiddenプロパティを設定することで、画像を非表示にしたり表示したりできます。

imageView.hidden = YES;

ヘッダーファイルで画像を定義すると、クラスのすべてのメソッドで画像にアクセスできます。

于 2013-01-16T15:35:33.677 に答える
0

cellForRowAtIndexPath編集中の条件で画像ビューを非表示にすることができます。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
...

    if (self.editing)
      imageView.hidden = YES;

...
}

次に、編集が設定されたときにテーブルビューをリロードします。

-(void)setEditing:(BOOL)editing animated:(BOOL)animated
{ 
    [super setEditing:editing animated:animated];

    [self.tableView reloadData];
}

私があなたの質問を正しく理解しているなら、あなたはすべてのtableViewセルにアクセスし、imageViewを非表示にしたいでしょう。ただし、セルは(正しく実装されている場合)再利用されるため、これは不可能です。したがって、セルの数はテーブルビューの行数よりも少ない可能性があります。

そのため、のセルの外観に関するすべてを設定する必要がありますcellForRowAtIndexPath

于 2013-01-16T16:04:11.967 に答える
0

他の方法を試した後、viewWithTagメソッドを使用して機能しています:)私の場合、1ページに20ビューしかないことがわかっているので、基本的に100からタグを開始します。

私のcellForRowAtIndexPath関数で

UIImageView *checkMark = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"checkMark.png"]];
checkMark.frame = CGRectMake(xx, xx, xx, xx);
checkMark.hidden = YES;
checkMark.tag = indexPath.row + 100;

そして、を使用してすべての画像にアクセスできます

for (int i = 100; i < [self.vehiclesArray count] + 100; i++) {
   ((UIImageView *)[self.view viewWithTag:i]).hidden = NO;
}
于 2013-01-16T16:38:05.587 に答える