2017-03-10 6 views
0

送信者が通知を受け取り、発生後にそのタイトルを変更するボタンがあります。発射する前に、ボタンのタイトルは "A"です。発射後、ボタンのタイトルは「B」です。Save UIButtonレルムスウィフト3の状態を通知センターで変更

変更された状態をRealmに保存しようとしているため、ユーザーはボタンが変更されたことを確認できます。

ポスト(発生)通知は、UIViewを追加する別のボタンアクションで発生します。そのサブビューは、ポスト通知を所有している:ポストが発射されたときに

NotificationCenter.default.post(name: fireNotification, object: nil) 

他のアドオン(オブザーバー)通知は、このイベントに作用する:

// MARK: - Observe Notification 

    NotificationCenter.default.addObserver(forName: fireNotification, object: nil, queue: nil) { notification in 
     print("Notification Observed") 

     sender.setTitle("B", for: .normal) 
     sender.setTitleColor(.red, for: .normal) 
     sender.isEnabled = false 
    } 

これは明らかに私がどのようにBにボタンの状態を変更しますこれを私の世界に書き出して保存しますか?私は試しました:

// MARK: - Observe Notification 

    NotificationCenter.default.addObserver(forName: fireNotification, object: nil, queue: nil) { notification in 
    print("Notification Observed") 

     let realm = try! Realm() 
     try! realm.write { 
     sender.setTitle("B", for: .normal) 
     sender.setTitleColor(.red, for: .normal) 
     sender.isEnabled = false 
      } 
     } 

オブジェクトのパラメータに何かを追加する必要がありますか?

答えて

0

Realmにデータを保存するには、独自のサブクラスRealmObjectを作成し、そのプロパティを定義する必要があります。非RealmObjectsの状態は保存できません。

レルムについての詳細を学ぶためにドキュメントをチェックアウトしてください:https://realm.io/docs/swift/latest/

+0

ねえドミトリーは、あなたが私に例を与える気にしませんか?ボタンはレルムがサポートするタイプではないため、プロパティとして使用することはできません。私はデータを使ってみましたが、それはうまくいきません。ストーリーボードを介してプログラムやボタンを作成し、 'isSelected'をオンにし、' UIImage(名前は "abc") 'を使って、コンセントからのすべての置換を試みました。私はドキュメントを読んだ。テーブルビューやコレクションビューのカスタムボタンにはどこにも例がありません。 –

+0

レコードについては、Realm Notificationsも使用しています(これは素晴らしいですが)。ボタンにIndexPathがないため、IndexPathで選択した項目の状態を保存できません。 –

関連する問題