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

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

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

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

Xcode

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

Swift

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

Q&A

解決済

2回答

3003閲覧

SwiftでTableViewCellの要素内のUIButtonをおしたら、親のViewControllerの要素を変更したい

退会済みユーザー

退会済みユーザー

総合スコア0

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

Xcode

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

Swift

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

0グッド

0クリップ

投稿2015/09/09 14:34

編集2015/09/10 02:36

イメージ説明SwiftでTableViewCellの要素のUIButtonをおしたら、親のViewControllerのNavigationControllerに設置してあるUIBarButtonItemのタイトルを変更したいです。
現在notificationObserverを利用しようかと思うのですが、もっと簡単に実現出来ないものかと
質問させていただきます。

ViewControllerの構成は
ViewControllerにNavigationControllerをEmbedしています。
ViewControllerの中にUITableViewがあります。その中にUITableViewCell更にUIButtonがあります。

コードはUITableViewCellとViewControllerに分かれています。

Swift

1class LikeTableCellTableViewCell: UITableViewCell { 2 override func awakeFromNib() { 3 super.awakeFromNib() 4 // Initialization code 5 } 6 7 @IBAction func chackSelectBox(sender: AnyObject) { 8 //ここからイベント発火して外のVCを触りたい 9 } 10}

ご教授よろしくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

TableCellに追加

Swift

1NSNotificationCenter.defaultCenter().postNotificationName("updateRightTitile", object: nil)

ViewControllerに追加

Swift

1NSNotificationCenter.defaultCenter().addObserver(self, selector: "updateRightTitile", name: "updateRightTitile", object: nil) 2 3func updateRightTitile(){ 4 headRightBtn.title = "変更" 5} 6

投稿2015/09/10 03:14

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

普通は画面遷移後のUIViewControllerに記述しておくものだよ。
割と初期にハマるtitleというプロパティについて。
上記リンクのコメントにある下記コードを遷移後のUIViewControllerに仕込めばいい。

Objective

1- (void)viewDidLoad 2{ 3 [super viewDidLoad]; 4 [self configureView]; 5 self.title = @"Details View!!!"; 6 NSLog(@"title: %@", self.navigationItem.title); 7}

動的にしたい場合はUINavigationControllerを継承したクラスを作って遷移後のUIViewControllerに対してタイトルに使用する文字列を渡す処理を作ればいいかもしれない。

投稿2015/09/10 00:37

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2015/09/10 02:12 編集

ご回答ありがとうございます。 申し訳ありません。質問内容と回答が相違しています。 まず今回、画面遷移は特に行いません。 UITableCell内のイベントから外のVCの内容を変えるものになります。 テーブルセル内のボタンをタップする。 するとnavigationController部分のボタンのタイトルを変更する。 UIViewControllerだとご回答頂いたとおりでいけますが、 TableCellからだと難しく...
退会済みユーザー

退会済みユーザー

2015/09/10 02:14

読み違えてたね。 UIViewControllerから普通にBarButtonItemは取れるよ。 この場合だと右側のItem配列だから controller.navigationItem.rightBarButtonItemでプロパティたどれば右のボタンアイテム取得できるんじゃない?
退会済みユーザー

退会済みユーザー

2015/09/10 02:31

ありがとうございます。 UIViewControllerからは多分簡単だと思います。 しかしUITableCellからはその方法だと難しいのです。 イベントはUITableCellに書かれています。
退会済みユーザー

退会済みユーザー

2015/09/10 02:34

class LikeTableCellTableViewCell: UITableViewCell { override func awakeFromNib() { super.awakeFromNib() // Initialization code } @IBAction func chackSelectBox(sender: AnyObject) {    //ここからイベント発火して外のVCを触りたい } }
退会済みユーザー

退会済みユーザー

2015/09/10 04:55 編集

解決してるみたいだけど、個人的にはNotificationに頼ったプログラムはゴミだと思うよ。 可読性下げるからデリゲートの実装方法調べた方がいい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問