0

ビュー モードと編集モードを切り替えるテーブル ビューがあります。ビューモードで透明にしたいセルが1つあり、編集モードでは「通常の」セルのように見えます(つまり、白い背景、角の丸い四角形のアウトライン)。基本的に、連絡先アプリで編集モードのオンとオフを切り替えるときに名前セルが行うのと同じことです。

背景が透明な UITableViewCell を作成して背景を透明にする方法の解決策を使用しましたが、元の背景を元に戻す方法がわかりません。

現在、viewDidLoad で 2 つのバックグラウンド ビューを作成しています。

nameCellDefaultBackview = [[UIView alloc] initWithFrame:CGRectZero];
nameCellDefaultBackview.backgroundColor = [UIColor clearColor];

nameCellEditBackview = [[UIView alloc] initWithFrame:CGRectZero];
nameCellEditBackview.backgroundColor = [UIColor whiteColor];

次に、セルにデフォルトの背景ビューを与えます。

nameCell.backgroundView = nameCellDefaultBackview;

setEditing:animated: では、編集モードに応じてセルの背景を設定します。

if (editing) {
    nameCell.backgroundView = nameCellEditBackview;
} else {
    nameCell.backgroundView = nameCellDefaultBackview;
}

問題は、編集モードでは、セルのように見えるものの代わりに白い長方形が表示されることです-これはまさに私が求めていたものですが、私が望んでいるものではありません:)。backgroundView を nil に設定する (= 変更はないようです)、「初期」バックグラウンド ビューを viewDidLoad に保存する (動作していないようで、デバッガーで変数を調べる) など、他にもいくつか試しました。 setEditing でセルに割り当てようとしたときに 0x0 でした)。

だから私が望むのは、通常モードでこのように見えることです:

ノーマルモード

編集モードでは次のようになります。

編集モード

しかし、現在編集モードで取得しているのは次のとおりです。

現在の編集ビュー

では、白い背景/境界線/丸みを帯びた角を元に戻すにはどうすればよいですか?

4

3 に答える 3

0

編集モードでは、backgroundView を設定しないでください。[tableView reloadData]編集モードに入ったときに呼び出すだけで、backgroundView を次のcellForRowAtIndexPathように設定できます。

if (!editing) {
    nameCell.backgroundView = nameCellDefaultBackview;
}
//if it is editing, then it will take the default style.

お役に立てれば。

于 2012-08-24T04:15:34.283 に答える
0

アプローチを少し変更することにしましたが、これは現在機能しています。

1 つのセルの背景を表示/非表示にする代わりに、2 つのセルができました。

IBOutlet UITableViewCell *nameCellViewMode;
IBOutlet UITableViewCell *nameCellEditMode;

viewDidLoad で: nameCellViewMode の背景を変更して透明にします。

UIView *clearBackgroundView = [[UIView alloc] initWithFrame:CGRectZero];
clearBackgroundView.backgroundColor = [UIColor clearColor];

nameCellViewMode.backgroundView = clearBackgroundView;

KDaker の提案に従って、setEditing:animated: で tableView reloadData を実行し、cellForRowAtIndexPath でこれを実行します。

if (self.editing)
{
   return nameCellEditMode;
}
else
{
   return nameCellViewMode;
}
于 2012-08-24T16:29:06.343 に答える
0

編集モードで元のセルを使用したい場合は、背景ビューを設定する代わりに、セルの表示と非表示を検討する必要があります。背景ビューは、他のすべてのビューの背後にサブビューとして追加されるため、透明に設定しても効果はありません。参照: Apple Doc .

表のセルを非表示または表示するには、この投稿を参照してください

于 2012-08-22T02:25:02.077 に答える