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

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

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

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

Q&A

1回答

1486閲覧

kolodaviewの画像に対応するタイトルの表示

anddy

総合スコア14

Swift

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

0グッド

0クリップ

投稿2019/08/04 18:01

kolodaの画像に対応するテキストを出力する

歌のタイトルを入力しその曲のジャケット写真をkolodaで表示させるアプリを作っています
その時にそのタイトル名をlabelで出したいのですが、写真に対応するタイトル名を表示させることができません
特に、一枚めの画像のタイトルと、前の画像に戻すときにタイトルを戻す方法がわかりません

発生している問題・エラーメッセージ

 kolodaの1枚目のタイトルが表示されない  前の画像に戻った時にそれに応じてタイトルが変更されない

該当のソースコード

swift

1import UIKit 2import Koloda 3import RealmSwift 4import Accounts 5import LINEActivity 6import FontAwesome_swift 7 8class ViewController: UIViewController,KolodaViewDelegate, KolodaViewDataSource { 9 10 @IBOutlet weak var label: UILabel? 11 12 @IBOutlet weak var kolodaView: KolodaView! 13 14 @IBOutlet weak var buttonRight: UIButton! 15 16 @IBOutlet weak var buttonRevert: UIButton! 17 18 @IBOutlet weak var buttonLeft: UIButton! 19 var musics:[Musics] = [] 20 21/* var titles: [String] = [] 22 23 var images: [Data] = [] 24 */ 25 26 func reloadView(){ 27 let realm = try! Realm() 28 29 musics = realm.objects(Musics.self).reversed() 30 31 kolodaView.reloadData() 32 } 33 34 override func viewDidLoad() { 35 36 super.viewDidLoad() 37 38 kolodaView.delegate = self 39 kolodaView.dataSource = self 40 41 buttonLeft.titleLabel?.font = UIFont.fontAwesome(ofSize: 30, style: .solid) 42 buttonLeft.setTitle(String.fontAwesomeIcon(name: .heartBroken), for: .normal) 43 44 45 buttonRight.titleLabel?.font = UIFont.fontAwesome(ofSize: 30, style: .solid) 46 buttonRight.setTitle(String.fontAwesomeIcon(name: .heartbeat), for: .normal) 47 48 buttonRevert.titleLabel?.font = UIFont.fontAwesome(ofSize: 30, style: .solid) 49 buttonRevert.setTitle(String.fontAwesomeIcon(name: .undo), for: .normal) 50 51 print(Realm.Configuration.defaultConfiguration.fileURL!) 52 53 54 55 56 57 } 58 59 override func viewWillAppear(_ animated: Bool) { 60/* if let titles = UserDefaults.standard.array(forKey: "titles") { 61 self.titles = titles as! [String] 62 } 63 */ 64 /* if let images = UserDefaults.standard.array(forKey: "images") { 65 self.images = images as! [Data] 66 } 67 */ 68 reloadView() 69 70 71 72 } 73 func koloda(_ koloda: KolodaView, didSwipeCardAt index: Int, in direction: SwipeResultDirection) { 74 75 label!.text = musics[index + 1].name 76 77 } 78 func koloda(_ koloda: KolodaView, viewForCardAt index: Int) -> UIView { 79 80 let img = UIImage(data: musics[index].image) 81 82 return UIImageView(image: img) 83 84 85 /* let cell = Bundle.main.loadNibNamed("CustomViewCell", owner: self, options: nil)?.first as? KolodaCellViewController 86 87 cell!.label.text = musics[index].name 88 89 let img = UIImage(data: musics[index].image) 90 91 cell?.view = UIImageView(image: img) 92 93 94 return cell!.view 95 96 */ 97 98 99 } 100 101 func kolodaNumberOfCards(_ koloda: KolodaView) -> Int { 102 /* return images.count 103 */ 104 return musics.count 105 } 106 107 108} 109 110//realm 111import RealmSwift 112 113class Musics: Object{ 114 @objc dynamic var id: Int = 0 115 116 @objc dynamic var image:Data = Data() 117 118 @objc dynamic var name:String = "" 119} 120

試したこと

viewdidloadやviewwillAppear、shouldSwipeCardAt,didSwipeCardAtなどでindexの値も工夫しながらやってみたんですが、1枚目の画像のタイトルが表示されません。2枚目の曲からは表示されます。また、一度戻すとそれに応じてタイトルも戻したいんですが、そうなりません

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

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

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

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

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

guest

回答1

0

タイトルの1つめが出ないのは下記が原因

swift

1func koloda(_ koloda: KolodaView, didSwipeCardAt index: Int, in direction: SwipeResultDirection) { 2 3 // ????‍♀️ index は 0 からのはず 4 label!.text = musics[index + 1].name 5 6 // ????‍♂️ index を使う(musics[0].nameにタイトルの1つ目がある) 7 label!.text = musics[index].name 8}

その上で前の画像に戻すのは revertAction という関数が
用意されているようなのでそのまま使えばいいと思います。
関数の中の処理はしっかりみておいたほうがいいと思います。
また,koloda の GitHub にサンプルプロジェクトがあるので参考にしてみてください。

swift

1@IBAction func undoButtonTapped() { 2 kolodaView?.revertAction() 3}

投稿2019/08/04 18:11

編集2019/08/04 18:30
TakuyaAso

総合スコア1361

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

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

anddy

2019/08/04 18:40

ご回答ありがとうございます。 試してみましたが、どちらもうまくいきませんでした。。。。
TakuyaAso

2019/08/04 18:43

それは残念でしたー
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問