2017-04-30 2 views
0

私の質問はこれです:UILabelのタップセンシティブをスウィフト3言語で書式的に受け入れやすくするアプローチですか?私は「コンパイルすれば飛ぶ」と言いたいと思うけど、後で私を噛んでしまうのであれば、この「ショートカット」を使う習慣を身につけたくない。さらに、それが許容できるのであれば、私のような新人には明らかでないこの方法の使用にはいくつかの欠点があるか?Swift 3.0のUILabelにUIButtonをレイヤーするのに適切な言語ですか?

私はコードを実装する方法を探しているわけではありません。私が持っている解決策が言語スタイルの観点から受け入れられるかどうかを尋ねています。


私はテーブルになりました2日間の細胞とどんな方法私がしようと内側に、それがコンパイルされた場合でも何らかのエラーが常にあるときTapGestureを受け入れるようにUILabelを取得しようとしてきました。丁寧に、私はテーブルビューの私のストーリーボードに行き、の上にボタン(積み重ねられていないか整列されていないか、実際にはストーリーボード上の同じ2D空間を占めています)をプロトタイプセル内に追加しました。ボタンのテキストを削除し、それをテーブルビューのセルコードにリンクし、UILabelのテキストを赤色と後ろに変更する基本機能を実装しました。これらの機能はすべて私が期待した通りです。ボタンをクリックすると、テキストが黒から赤に変わり、もう一度クリックすると元に戻ります。 UILabelのテキストは、白い背景の表のセルで静的であり、実際の関数はテキストを変更しません。そのビューからの委任を介して別のビューを変更します。

なぜこのようになりますか? UILabelのインタラクションボックスをチェックして他の質問と回答をタップ可能にする場合でも、UILabelをテーブルビューのセルにドラッグ&ドロップしてアクションを実行することはできません。オプションは存在しませんプルダウンメニューに表示されます。 UILabelをテーブルビューコントローラーにドラッグ&ドロップしてコントロールすることができます。タッチを感知するのはテーブルビューコントローラなので、これは私には一種の感覚です(右?)。しかし、一方で、私はthis questionの答えに従うとうまく動作するテーブルビューのセルにスイッチがあります。ストーリーボードコードインターアクション(コントロール+ドラッグ)の単純な機能は、私が望むものを得ることを妨げています。たぶん、コントロール+ドラッグは、私が行動を起こすことを許すべきであり、そうではないでしょうか?知りません。 UILabelのテキストスケーリング機能は本当に便利なので、私はUIButtonだけを使用したくありません。

+0

ルック:次のコードを検討https://github.com/zacwest/ZSWTappableLabel) – n00bProgrammer

+2

あなたの質問はSwift 3と何が関係していますか? Swift 2、Swift 3、Objective-C、その他の言語を使用するかどうかは同じです。 – rmaddy

+0

@rmaddy私は自分が行っていることに特化しようとしています。言語スタイルがすべての言語で同じであるというあなたの主張は、まったく真実ではありません。さもなければ、私はSwiftでpython list comprehensionを使うことができました。あなたの質問は、それがコンパイルされている限り、それは大丈夫ですという答えを懇願しています。 –

答えて

0

あなただけの、表のセルのタップを認識し、クラスにテーブルビュー

tableView.delegate = self 

のデリゲートを作成し、

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
     //your code here 
    } 

を実装する場合、私はまた、あなたが時間を割いていただければと思いますUITableViewsについてもう少し詳しく読む。すべてのUITableViewCellはそれ自身でラベルを持っています。 (例えば、[ZSWTappableLabel] [TTTAttributedLabel(https://github.com/TTTAttributedLabel/TTTAttributedLabel)としてリンク検出及びユーザインタラクションをサポートUILabelのオープンソースのサブクラスに

tableView.dataSource = self // this code will ideally be in init 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "lovCell") 
     cell.textLabel?.text = dummyData[indexPath.row] 
     return cell 
    } 
関連する問題