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

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

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

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

Q&A

解決済

2回答

402閲覧

Swift tableviewを使ったToDoリストでラベルの表示位置を操作したい

blast4.2

総合スコア10

Swift

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

0グッド

0クリップ

投稿2019/09/26 01:21

Swift

1import Foundation 2import RealmSwift 3 4class Todo: Object{ 5 6 @objc dynamic var title = "" 7 @objc dynamic var title2 = "" 8 9}

Swift

1import UIKit 2import RealmSwift 3 4class ViewController: UIViewController, UITableViewDataSource { 5 6 @IBOutlet weak var table: UITableView! 7 @IBOutlet weak var textBox: UITextView! 8 9 10 var todoItems: Results<Todo>! 11 12 override func viewDidLoad() { 13 super.viewDidLoad() 14 15 table.dataSource = self 16 17 let realm = try! Realm() 18 todoItems = realm.objects(Todo.self) 19 20 table.reloadData() 21 22 } 23 24 override func viewWillAppear(_ animated: Bool) { 25 super.viewWillAppear(animated) 26 table.reloadData() 27 } 28 29 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 30 return todoItems.count 31 } 32 33 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 34 let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) 35 let object = todoItems[indexPath.row] 36 cell.textLabel?.text = object.title 37 cell.textLabel?.text = object.title2 38 39 40 return cell 41 } 42 43 44 45 func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { 46 if editingStyle == .delete{ 47 48 deleteTodo(at: indexPath.row) 49 table.reloadData() 50 } 51 } 52 func deleteTodo(at index: Int){ 53 54 let realm = try! Realm() 55 try! realm.write{ 56 realm.delete(todoItems[index]) 57 } 58 } 59 60 61 @IBAction func addButton(_ sender: Any) { 62 let realm = try! Realm() 63 let todo = Todo() 64 todo.title = textBox.text! 65 try! realm.write{ 66 realm.add(todo) 67 } 68 } 69 70 @IBAction func addButton2(_ sender: Any) { 71 let realm = try! Realm() 72 let todo = Todo() 73 todo.title2 = textBox.text! 74 try! realm.write{ 75 realm.add(todo) 76 } 77 } 78 }

Swift

1import UIKit 2 3class ToDoTableViewCell: UITableViewCell { 4 5 @IBOutlet weak var nameLabel: UILabel! 6 @IBOutlet weak var nameLabel2: UILabel! 7 8 9 10 override func awakeFromNib() { 11 super.awakeFromNib() 12 // Initialization code 13 } 14 15 override func setSelected(_ selected: Bool, animated: Bool) { 16 super.setSelected(selected, animated: animated) 17 18 // Configure the view for the selected state 19 } 20 21}

https://qiita.com/Shiro_Head/items/285ada98da1858befb6f

こちらの記事を参考に、Realmを利用したToDoアプリを作成しました。
それを参考に、1つのtextviewから、LEFT、とRIFHTの2つのボタンで、表示するラベルを操作したいと思い上記のようなコードを書いたのですが、上手く表示されません。

textviewに”バナナ”等の黄色いものを入力してLEFTのボタンを押すと、黄色いラベル上に表示され、”りんご”のように赤いものを入力してRIGHTのボタンを押すと、赤いラベル上に表示されるようにしたいと思っています。
(tableviewcell上に横いっぱいに広げ、背景色を変えた、黄色と赤のラベルを2つ配置しています)

イメージ説明

ばなな → LEFT
りんご → RIGHT
ポスト → RIGHT
の順に入力、ボタンタップをした結果上記のような表示になってしまいます。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
let object = todoItems[indexPath.row]
cell.textLabel?.text = object.title
cell.textLabel?.text = object.title2

return cell }

この部分が間違っているのかと思うのですが、解決方法がわかりませんでした。

どのようにすれば解決できるか、ご教授お願い致します。

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

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

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

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

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

t_obara

2019/09/26 04:04

cell.textLabel?.text = object.title cell.textLabel?.text = object.title2 これで、同じラベルに設定しているので、あとで設定したtitle2しか反映しないのでは?cellに2つの別のラベルを設置する必要があるかと。
blast4.2

2019/09/27 23:05

有難うございます。 let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! ToDoTableViewCell let object = todoItems[indexPath.row] cell.nameLabel.text = object.title cell.nameLabel2.text = object.title2 as! ToDoTableViewCell を追記し、2つのラベルを分け、これで解決しました。
hameji

2019/09/28 02:45

質問自体が、解決済み?ってことですよね。
takabosoft

2019/09/30 00:25

解決したのでしたら、ご自分で回答して質問をクローズしてください。
guest

回答2

0

et cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! ToDoTableViewCell
let object = todoItems[indexPath.row]
cell.nameLabel.text = object.title
cell.nameLabel2.text = object.title2
as! ToDoTableViewCell を追記し、2つのラベルを分け、これで解決しました。

投稿2020/05/13 10:34

blast4.2

総合スコア10

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

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

0

自己解決

et cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! ToDoTableViewCell
let object = todoItems[indexPath.row]
cell.nameLabel.text = object.title
cell.nameLabel2.text = object.title2
as! ToDoTableViewCell を追記し、2つのラベルを分け、これで解決しました。

投稿2019/10/03 13:01

blast4.2

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問