2017-01-03 36 views
0

私のiOSアプリケーションでは、現在私がストーリーボードで設計したカスタムUITableViewCellの問題で苦労しています。UITableViewCellをタップするとUIViewが消える

この特定のUITableViewCellを使用してレンダリングされるテーブルビューの行をタップすると問題が表示されます。

これは、このUITableViewCellのでレンダリングされた行のデフォルトの外観です:

default look of a row rendered with UITableViewCell

これは私がそれをタップした後、それがどのように表示されるかである:

how it appears after I tap

あなたが見ることができるように行がタップされるまで、緑色の線は消えて、目に見えません。行がリリースされるとすぐにデフォルトの外観に戻り、すべてが問題ありません。

これは私が見て期待していたものです。

expected result

これは、ストーリーボードに示すようにUITableViewCellの構造です。 RouteViewは緑のラインのUIView項目である:

UITableViewCell structure as shown into the storyboard

私ものUIViewオブジェクトのストーリーボードの属性セクションを追加します。

attributes section of the storyboard for the UIView

私は、そのハンドルのUITableViewCellに添付クラスを持っていますIBOutletsを介したオブジェクトのレイアウト、行のタップはUITableViewレベルで処理されます。

いくつかの条件に基づいてUIViewの背景色を変更しますが、緑色、赤色、青色、決して透明ではありません。それはthisと関係がありますか?

どうすればこの問題を解決できますか? ありがとうございます。

+0

* routeView *を非表示に設定していますか? – Rikh

+0

@Rikh Nope。 UITableViewCell上でタップイベントを処理する関数ですが、現在は呼び出されていますが空ですが、ロジックは実行されません。問題はどこかのレイアウトレベルにあるはずです。 – LucioB

答えて

2

私はthis answerに記載されているソリューションを見つけることができましたが、私の場合はobj-cです。

明らかに、UITableViewCellが選択または強調表示されたときに起こることは、自動的にすべての背景色の背景を削除することです(私は[UIColor clearColor]だと思います)。

私がやっていることは、setSelectedまたはsetHighlightedへのスーパーメソッド呼び出しを実行してすぐに背景色を設定する前に、私のビューの色をとっていることです。

このようにして、すべてのビューの背景色を失うことなく選択動作を維持するという望ましい効果を100%得ることができます。

+0

あなたがそれを解決したことを聞いて幸せです:) –

1

selectionStylenonecellForRowAtIndexPathに設定してみましたか?

cell.selectionStyle = .none 
+0

それはあなたのために働くのですか? –

+0

お寄せいただきありがとうございますが、期待どおりに動作しません。 selectionStyleをnoneに設定すると、行から選択エフェクトが削除されます。代わりに私はそれを維持したいが、質問で説明されているように緑の線を失うことなく。 – LucioB

+0

routeViewはUIView – LucioB

0

おそらくセルの選択スタイルをnoneに設定する必要があります。これは、Nirav Dの記述どおりに、またはストーリーボードを介してプログラムで行うことができます(画像参照)。現在の回答の

enter image description here

+0

@Nirav答え設定の選択肢noneSiteleに言ったように、単純に行から選択効果を削除します。代わりに私はそれを維持したいが、質問で説明されているように緑の線を失うことなく。 – LucioB

0

はどちらも正しいですが、念のためにあなたはObjective-Cの代わりに迅速に取り組んでいます。

あなたが「クリック」のEFECTを持っているしたい場合は、あなたが

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

[tableView deselectRowAtIndexPath:indexPath animated:YES]; 

} 

を使用するように持っているよりも、cell.selectionStyle = UITableViewCellSelectionStyleNone;

かを使用する必要があり、それが役に立てば幸い!:-)

関連する問題