2011-07-22 12 views
4

私のすべてのUITableViewCellの背景色を設定しました。しかし、私がUIBarButtonItemの "edit"をクリックすると、削除とドラッグ可能なアイコンがバックグラウンドカラーを歪ませ、バックグラウンドカラーを背景にします。これを回避する方法はありますか?必要に応じてコードを表示できますが、これはかなり簡単な質問のようです。編集モードに入るときにUITableViewCellの背景色を維持する

答えて

6

これは編集モードのuitableviewcellsのデフォルト動作です。あなたがここにそれを設定できるように、必要に応じて

- (void)setEditing:(BOOL)editing animated:(BOOL)animate 
{ 
if(editing) 
{ 
    // set background color 
} 

else { 
} 

にもう一度tableViewCellsの背景色を設定してみてください、あなたの財産として、あなたの背景色を設定してみてください。

+5

ありがとうございます!バックグラウンドビューを割り当て/初期化しなければならないことは分かりませんでしたが、tableViewCellが付属していると思いました。私のために働いたコードは '[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]]でした。backgroundView = [[[UIView alloc] init] autorelease]; [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]] backgroundView.backgroundColor = [[cellArray objectAtIndex:i] color]; ' それ以降はすべてが機能しました。 – Mason

+1

メーソンありがとうございます。私はまったく同じ問題を抱えていて、過去数時間、私はそれに対して頭を叩いています。最後に、backgroundViewの初期化に関する洞察が私の問題を解決しました。 – Umair

+0

私はそのような長い間同じ問題を抱えており、backgroundViewを初期化することですべての違いが生じました! –

8

テーブルセルの背景色は、通常はこのように設定されている:

cell.backgroundView.backgroundColor = [UIColor redColor]; 

これが正常に動作します。しかし、クラスUITableViewCellのオブジェクトが作成されると、デフォルトではbackgroundViewはありませんが、それはnilです。開発者は、必要なときにbackgroundViewを作成する必要があります。したがって、特定の状況に応じて、次のようなものを実行する必要があります。

if (cell.backgroundView == nil) { 
    cell.backgroundView = [[[UIView alloc] init] autorelease]; 
} 
cell.backgroundView.backgroundColor = [UIColor redColor]; 
関連する問題