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

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

ただいまの
回答率

90.48%

  • Swift

    7475questions

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

  • Xcode

    4211questions

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

  • iOS

    4087questions

    iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

  • Realm

    204questions

    RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

RealmSwiftでの質問です。

受付中

回答 0

投稿

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

rubbercorn

score 2

前提・実現したいこと

ここに質問したいことを詳細に書いてください
RealmSwiftを使って、野球関係のデータベースを作っています。
ViewController(前項)でチーム名と選手名を登録して、ViewController3(後項)で参照・修正(更新)するコードを書きたいと思っています。
ネット等でアドバイスを貰いながら、下記コードまではできたのですが、ViewController3(後項)でUITextFieldをタップしてもRealmSwiftの中身を表示することができないでいます。

該当のソースコード

以下VeiwController(前項)

import UIKit
import RealmSwift

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var textField: UITextField!
    @IBOutlet weak var textField2: UITextField!
    @IBOutlet weak var teamLabel: UILabel!
    @IBOutlet weak var nameLabel: UILabel!
    
    var team:String!
    var name:String!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        }

    @IBAction func textFieldDidEndOnExit(sender: UITextField) {

        textField.delegate = self
        textField2.delegate = self
        
        let realm = try! Realm()
        let user = User()
        
        team = textField.text
        teamLabel.text = team
        name = textField2.text
        nameLabel.text = name
        
        user.team = team
        user.name = name
        
        try! realm.write {
            realm.add(user)
        }
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
    //キーボードを閉じる
    func textFieldShouldReturn(textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return true
    }
}

以下ViewController3(後項)

import UIKit
import RealmSwift

class ViewController3: UIViewController,UIPickerViewDelegate,UIToolbarDelegate, UITextFieldDelegate{
    
    @IBOutlet weak var textField: UITextField!
    @IBOutlet weak var textField2: UITextField!
    @IBOutlet weak var teamLabel: UILabel!
    @IBOutlet weak var nameLabel: UILabel!
    
    var user: Results<User>?
    var token: NotificationToken?
    
    var team:String!
    var name:String!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let realm = try! Realm()
        let user = realm.objects(User)[0]
        
        var team1:String!
        var name1:String!
        
        team1 = user.team
        teamLabel.text = team1
        name1 = user.name
        nameLabel.text = name1

        let pickerView = UIPickerView()
        pickerView.showsSelectionIndicator = true
        pickerView.delegate = self
        
        textField.inputView = pickerView
        
        var toolBar: UIToolbar!
        toolBar = UIToolbar(frame: CGRectMake(0, self.view.frame.size.height/6, self.view.frame.size.width, 40.0))
        toolBar.layer.position = CGPoint(x: self.view.frame.size.width/2, y: self.view.frame.size.height-20.0)
        toolBar.barStyle = .BlackTranslucent
        toolBar.tintColor = UIColor.whiteColor()
        toolBar.backgroundColor = UIColor.blackColor()
        
        let toolBarBtn = UIBarButtonItem(title: "    完了    ", style: .Done, target: self, action: #selector(ViewController3.tappedToolBarBtn(_:)))
        toolBarBtn.tag = 1
        toolBar.items = [toolBarBtn]
        textField.inputAccessoryView = toolBar
        
        token = realm.addNotificationBlock { /*[weak self]*/ (notification, realm) -> Void in
            /*self?.*/pickerView.reloadAllComponents()
        }
    }
    
    @IBAction func textFieldDidEndOnExit(sender: UITextField) {
        //変数定義
        textField.delegate = self
        textField2.delegate = self
        
        let realm = try! Realm()
        let user = User()
        try! realm.write {

        team = textField.text
        user.team = team
        name = textField2.text
        user.name = name
        }
    }
    //pickerに表示する列数を返す
    func numberOfComponentsInPickerView(pickerView: UIPickerView!) -> Int {
        return 1
    }
    //pickerに表示する値を返すデリゲートメソッド
    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> Int? {
        if let user = user {
            return user.count
        }
        return 0
    }
    //pickerが選択された際に呼ばれるデリゲートメソッド
    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        if let user = user {
            return user[row].team
        }
        return nil
    }
    func tappedToolBarBtn(sender: UIBarButtonItem) {
        textField.resignFirstResponder()
    }
}

試したこと

前項のUITextFieldにチーム名・選手名を入力。
後項のUITextFieldをタップすると、前項で入力した内容が、UIPickerViewで参照できる。
その中から1つを選んで書き換えるモードになって、改行をタップすると更新が完了する。
という内容にしたいと思っていますが、
まだそこまでできあがっていません。
というか、初心者のため、そこまでの知識がありません。

どなたか解る方ご教授お願いします。

補足情報(言語/FW/ツール等のバージョンなど)

RealmSwift 0.98.6
Xcode 7.3

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正の依頼

  • YasuhiroMiyake

    2016/04/19 08:57

    >前項のUITextFieldにチーム名・選手名を入力。 >後項のUITextFieldをタップすると、前項で入力した内容が、UIPickerViewで参照できる。 >その中から1つを選んで書き換えるモードになって、改行をタップすると更新が完了する。 >という内容にしたいと思っていますが、 >まだそこまでできあがっていません。 >というか、初心者のため、そこまでの知識がありません。 書かれている内容が全て出来ないのでしょうか。 それとも一部が出来ないのでしょうか。 順番に確認して何が出来ていないのかを確かめて下さい。 1. 書き込まれた値はRealmに渡す前に存在しているか 2. Realmに渡して正しく登録出来ているか 3. Realmから正しく値が取得出来ているか 4. 取得した値を画面に表示出来ているか 5. 編集した内容をRealmに渡す前に存在しているか 6. Realmに渡した値が反映されているのか 7. 最初の画面でRealmの値を取得しなおしているのか。

    キャンセル

まだ回答がついていません

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

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

関連した質問

  • 解決済

    swift ピッカービュー PickerView font

    ピッカービューを使っていて ピッカービューにコマみたいなのあるじゃないですか それ一つ一つフォントを変えてたいのですが・・・ できるのでしょうか?? もし出来るので

  • 解決済

    Swift3でボタンをタップした時にPickerViewをしたから出す方法

    前提・実現したいこと タイトル通りなのですが、ボタンをタップした時にピッカーが下から出てくるようにしたいです。 TextFieldをタップした時にピッカーが下から出るように

  • 解決済

    同一viewcontroller内に複数の種類のpickerViewが出るようにしたい。

    前提・実現したいこと xcode8,swift3で、プログラミングを始めてまだ数ヶ月の初心者です。理解力の乏しい点などご迷惑をおかけしてしまうかと思いますが、宜しくお願いします。

  • 解決済

    pickerView 内の文字の色を変えたい

    pickerView内の文字の色とサイズを変更したいのですがウェブで調べても出てこなかったためここで質問させていただきます。 storyBoardの編集でそれは可能でしょうか

  • 解決済

    PickerViewの不要なボタンを消したい

    PickerViewを出すと左の上の方に、こんなボタンが表示されますが、いらないので消したいんです。 どこをどうすればいいのでしょう?

  • 解決済

    Swift3におけるpickerViewの作成

    前提・実現したいこと プログラミング初心者です。 以下のサイトを参考に、Xcodeを使用したiOSのアプリ開発で PickerViewを使用した画面を作成したいと考えています。

  • 解決済

    swift realm xcode

    現在、UserDefaultsを使ってテキストに入力した文字をラベルに反映させ、保存するという単純なものを作りましたが。これをRealmを使って同じようにさせたいのですが、本日使い

  • 解決済

    CustomAlertについて

    困っている事 現状のalertでは私のイメージしているものが作れなかったのでcustomAlertで一からalertを作ることにしたのですがcutotomで作ったalertのコード

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

  • Swift

    7475questions

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

  • Xcode

    4211questions

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

  • iOS

    4087questions

    iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

  • Realm

    204questions

    RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。