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

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

ただいまの
回答率

87.59%

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

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 960

score 10

import Foundation
import RealmSwift

class Todo: Object{

  @objc dynamic var title = ""
  @objc dynamic var title2 = ""

}
import UIKit
import RealmSwift

class ViewController: UIViewController, UITableViewDataSource {

    @IBOutlet weak var table: UITableView!
    @IBOutlet weak var textBox: UITextView!


    var todoItems: Results<Todo>!

    override func viewDidLoad() {
        super.viewDidLoad()

        table.dataSource = self

        let realm = try! Realm()
        todoItems = realm.objects(Todo.self)

        table.reloadData()

    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        table.reloadData()
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return todoItems.count
      }

      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
      }



    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
        if editingStyle == .delete{

            deleteTodo(at: indexPath.row)
            table.reloadData()
    }
    }
    func deleteTodo(at index: Int){

        let realm = try! Realm()
        try! realm.write{
            realm.delete(todoItems[index])
        }
    }


    @IBAction func addButton(_ sender: Any) {
        let realm = try! Realm()
        let todo = Todo()
        todo.title = textBox.text!
        try! realm.write{
            realm.add(todo)
        }
    }

    @IBAction func addButton2(_ sender: Any) {
        let realm = try! Realm()
        let todo = Todo()
        todo.title2 = textBox.text!
        try! realm.write{
            realm.add(todo)
        }
    }
 }
import UIKit

class ToDoTableViewCell: UITableViewCell {

    @IBOutlet weak var nameLabel: UILabel!
    @IBOutlet weak var nameLabel2: UILabel!



    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

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
}

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • t_obara

    2019/09/26 13:04

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

    キャンセル

  • blast4.2

    2019/09/28 08: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 11:45

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

    キャンセル

  • takabosoft

    2019/09/30 09:25

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

    キャンセル

回答 2

check解決した方法

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つのラベルを分け、これで解決しました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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つのラベルを分け、これで解決しました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 87.59%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る