質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

474閲覧

TTTAttributedLabel使用時のエラー

midori0822

総合スコア61

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/05/22 19:20

こんにちは。早速本題です。

tableViewCellにTTTAttributedLabelをclassとしたLabelを置きました。
リンク内容リンク先を参考に実装しています。
下記が関連していそうなtableViewCellの内容です。

swift

1//cell 2import UIKit 3import TTTAttributedLabel 4 5 6class TableViewCell: UITableViewCell,TTTAttributedLabelDelegate{ 7 8 @IBOutlet weak var label1: TTTAttributedLabel! 9 10 override func awakeFromNib() { 11 super.awakeFromNib() 12 // Initialization code 13 14 } 15 16 override func setSelected(_ selected: Bool, animated: Bool) { 17 super.setSelected(selected, animated: animated) 18 19 // Configure the view for the selected state 20 } 21 22 func setCell(textLabel:String,select:Bool){ 23 24 25 26 label1.enabledTextCheckingTypes = NSTextCheckingResult.CheckingType.link.rawValue 27 28 label1.text = textLabel 29 30 label1.delegate = self 31} 32 func attributedLabel(_ label: TTTAttributedLabel!, didSelectLinkWith url: URL!) { 33 //処理 34 } 35} 36
label1.enabledTextCheckingTypes = NSTextCheckingResult.CheckingType.link.rawValue

この一文でエラーが出ているようでアプリがクラッシュしています。

エラー文には
libc++abi.dylib: terminating with uncaught exception of type NSException
と出ています。接続を確認してみましたがおそらく大丈夫です。

TTTAttributedLabeを使うのは初めてなのでつまずいてしまいました。
label上のlinkを実装できるようにするにはこれからどのようにすれば良いですか。必要な情報があればお聞きください。分かる方返信お待ちしています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Storyboard or xibにラベルを配置していると思いますが、そのラベルのCustom ClassTTTAttributedLabelになっているでしょうか?

イメージ説明

それでも解決しなければコンソールに出ているエラーをすべて載せてください。

回答追記

swift

1 2import UIKit 3import TTTAttributedLabel 4 5class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 6 7 @IBOutlet weak var tableView: UITableView! 8 9 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 10 return 3 11 } 12 13 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 14 if let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath as IndexPath) as? CustomCell { 15 cell.setText(text: "URLにタップできます。\nhttps://www.google.co.jp/") 16 return cell 17 } 18 return UITableViewCell() 19 } 20} 21 22class CustomCell: UITableViewCell, TTTAttributedLabelDelegate { 23 24 @IBOutlet weak var label: TTTAttributedLabel! 25 26 func setText(text: String) { 27 label.enabledTextCheckingTypes = NSTextCheckingResult.CheckingType.link.rawValue 28 label.text = text 29 label.delegate = self 30 } 31 32 func attributedLabel(_ label: TTTAttributedLabel!, didSelectLinkWith url: URL!) { 33 print("Tapped!") 34 } 35}

投稿2018/05/22 22:12

編集2018/05/23 14:26
_Kentarou

総合スコア8490

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

midori0822

2018/05/23 09:14

カスタムクラスは設定してあります。 コンソールは以下になります。 ↓ ↓ 2018-05-23 18:09:03.760408+0900 A[74766:3575624] [MC] Lazy loading NSBundle MobileCoreServices.framework 2018-05-23 18:09:03.761578+0900 A[74766:3575624] [MC] Loaded MobileCoreServices.framework 2018-05-23 18:09:03.912145+0900 A[74766:3575624] Unknown class _TtC5TODO_18TTTAttributedLabel in Interface Builder file. 2018-05-23 18:09:03.914006+0900 A[74766:3575624] -[UILabel setDelegate:]: unrecognized selector sent to instance 0x7f9b89549750 2018-05-23 18:09:03.980232+0900 A[74766:3575624] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UILabel setDelegate:]: unrecognized selector sent to instance 0x7f9b89549750' *** First throw call stack: ( 0 CoreFoundation 0x000000010173812b __exceptionPreprocess + 171 1 libobjc.A.dylib 0x0000000100dccf41 objc_exception_throw + 48 2 CoreFoundation 0x00000001017b9024 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132 3 UIKit 0x00000001024fcf51 -[UIResponder doesNotRecognizeSelector:] + 295 4 CoreFoundation 0x00000001016baf78 ___forwarding___ + 1432 5 CoreFoundation 0x00000001016ba958 _CF_forwarding_prep_0 + 120 6 A 0x0000000100425a1d _T05TODO_13TableViewCellC03setD0ySS9textLabel_Sb6selecttF + 237 7 A 0x00000001004092b6 _T05TODO_14ViewControllerC05tableB0So07UITableB4CellCSo0eB0C_10Foundation9IndexPathV12cellForRowAttF + 2646 8 A 0x000000010040b63c _T05TODO_14ViewControllerC05tableB0So07UITableB4CellCSo0eB0C_10Foundation9IndexPathV12cellForRowAttFTo + 92 9 UIKit 0x000000010242a484 -[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] + 778 10 UIKit 0x000000010242aa2a -[UITableView _createPreparedCellForGlobalRow:willDisplay:] + 74 11 UIKit 0x00000001023f01f6 -[UITableView _updateVisibleCellsNow:isRecursive:] + 3031 12 UIKit 0x00000001024122e6 -[UITableView layoutSubviews] + 176 13 UIKit 0x000000010239aa6d -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1439 14 QuartzCore 0x000000010529261c -[CALayer layoutSublayers] + 159 15 QuartzCore 0x00000001052967ad _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 401 16 QuartzCore 0x000000010521d86c _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 364 17 QuartzCore 0x000000010524a946 _ZN2CA11Transaction6commitEv + 500 18 UIKit 0x00000001022f3167 _afterCACommitHandler + 272 19 CoreFoundation 0x00000001016dac07 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23 20 CoreFoundation 0x00000001016dab5e __CFRunLoopDoObservers + 430 21 CoreFoundation 0x00000001016bf124 __CFRunLoopRun + 1572 22 CoreFoundation 0x00000001016be889 CFRunLoopRunSpecific + 409 23 GraphicsServices 0x00000001088d39c6 GSEventRunModal + 62 24 UIKit 0x00000001022c95d6 UIApplicationMain + 159 25 A 0x000000010042cd07 main + 55 26 libdyld.dylib 0x0000000106181d81 start + 1 ) libc++abi.dylib: terminating with uncaught exception of type NSException (lldb)
_Kentarou

2018/05/23 10:26

> reason: '-[UILabel setDelegate:]: unrecognized selector sent to instance 0x7f9b89549750' TTTAttributedLabel ではなくてUILabelを参照している様に見えますね。一度IBOutletを削除してもう一度繋いでみてください。
midori0822

2018/05/23 13:01

再接続後も同じようにクラッシュしました。 labelにやってはいけない設定、やらなければいけない設定でもあるのでしょうか? delegate処理を消して通してもクラッシュします。 ↓↓ MobileCoreServices.framework 2018-05-23 21:59:48.045084+0900 A[76899:3696331] Unknown class _TtC5TODO_18TTTAttributedLabel in Interface Builder file. 2018-05-23 21:59:48.047303+0900 A[76899:3696331] -[UILabel setEnabledTextCheckingTypes:]: unrecognized selector sent to instance 0x7fb9c1e2df40 2018-05-23 21:59:48.055608+0900 A[76899:3696331] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UILabel setEnabledTextCheckingTypes:]: unrecognized selector sent to instance 0x7fb9c1e2df40'
midori0822

2018/05/23 13:14

label1.text = textLabel のみだとクラッシュせず従来のlabelのように表示されます
_Kentarou

2018/05/23 13:24

新規のプロジェクトに最低限のコードを書いて実行できるかどうか試してもらえますか?
_Kentarou

2018/05/23 13:26

自分が試した最低限のコードを回答に追記しときました。
midori0822

2018/05/23 13:45

別プロジェクトと、同画面の一番表の階層のlabelで試したところ、どちらも成功しました! ということは、tableviewcellクラスのsetCellで行っているのがまずいのでしょうか。
_Kentarou

2018/05/23 13:51 編集

試しにメソッド名変えてやってみたらどうなるでしょうか?
midori0822

2018/05/23 14:13 編集

メソッドを変えてもクラッシュしました。 tableviewのcellForRowAtで以下を実装してもだめでした。 let label1 = cell.viewWithTag(10) as! TTTAttributedLabel label1.text = textArray[indexPath.row] label1.delegate = self label1.enabledTextCheckingTypes = NSTextCheckingResult.CheckingType.link.rawValue tebleview内でやることがそもそもできないわけではないのですよね?
_Kentarou

2018/05/23 14:14

やったことないの分かりません、、、 ちょっとやってみます。
_Kentarou

2018/05/23 14:27

表示できる最低限のコードしか書いてませんが、カスタムしたセルに表示できました。 回答に載せたので見てみてください。
midori0822

2018/05/23 15:20

最初_Kentarou様に指摘していただいた場所の下のModuleにプロジェクト名が入り、下のチェック欄がオンになっていたことが原因でした。 修正すると上手く通りました。 最初に気づければよかったのですが……???? 大変長い間返信いただき、本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問