- 締切済み
Objective-C 継承関係にないインスタンスの情報を取得するには
Objective-C 継承関係にないインスタンスの情報を取得するにはどうしたらいいですか? はじめまして。iPhoneSDKで開発はじめたばかりの超ビギナーなんですが、 2つのViewControllerの間で情報を受け渡す方法がわからず困っています。 (オブジェクト指向言語も初めてです。) viewA: UIViewController UILabel *labelA; viewB: UIViewController UILabel *labelB; という2つのviewControllerを作成した viewBのメッソドの中でviewAのlabelAの値を取得したいのですが、どのようにしたら良いのでしょうか? ご享受宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- harawo
- ベストアンサー率58% (3742/6450)
> OyaClassのインスタンスからでは取得できているので、インスタンス化されていると思うのですが。 Objective-Cの基本を、あなたが理解できていないと、判断せざるを得ません。 「急がば回れ」という言葉どおり、いちど基本の基本から勉強し直すことをお勧めします。
- harawo
- ベストアンサー率58% (3742/6450)
> ViewBのメソッドで _viewAを指定しようとすると '_viewA'Undeclaredが出てしまいます。 「undeclare」は、直訳すると、「宣言していない」「申告していない」です。 意味を推測するまでもなく、そのままだと思いますが、いかがですか? Interface Builderでインスタンス化しているか? 前の行で、「ViewA *_viewA = ~」というように、宣言しているか? こんなとところではありませんか?
補足
ご回答ありがとうございます。 OyaClassのインスタンスからでは取得できているので、インスタンス化されていると思うのですが。 >>前の行で、「ViewA *_viewA = ~」というように、宣言しているか? とはどういう意味でしょうか? Interface Builderでインスタンス化した上でViewBのメソッドの中で何か指定がいるのでしょうか。
- harawo
- ベストアンサー率58% (3742/6450)
> ネットで色々で調べてプロパティを設定してみたのですが、うまく取得できませんでした。 Googleで、「objective-c property」というキーワードで検索すると、これが最初にヒットしました。 http://journal.mycom.co.jp/column/objc/102/index.html 話の前提として、クラスviewBのヘッダファイルで、「#import "viewA.h"」とインポートしていますか? プロパティの書式は、「@property (属性) 型 インスタンス名」です。「(属性)」が抜けていませんか? 蛇足ですが、Objective-Cの規則では、クラス名は大文字で開始し、変数やインスタンス名と区別することになっています。
補足
早速のご回答ありがとうございます。また補足のご指摘も頂き勉強になります。 ご指摘頂いたところを修正しためしてみたのですが下記のような結果になりました。 何か考え方が根本的に誤っているのでしょうか? 度々の質問で申し訳ありませんが、ご回答いただければ幸いです。 #import<ViewA.h> #import<ViewB.h> OyaClass:NSObject <UIApplicationDelegate> ViewAのインスタンスを作成 インスタンス名:_viewA ViewBのインスタンスを作成 インスタンス名:_viewB ViewA: UIViewController UILabel *labelA; @property(nonatomic,retain) UILabel *labelA #import<ViewA.h> ViewB: UIViewController UILabel *labelB; @property(nonatomic,retain) UILabel *labelB <結果> OyaClassのメソッドで _viewA.labelA は取得できました。 ViewBのメソッドで _viewAを指定しようとすると '_viewA'Undeclaredが出てしまいます。
- harawo
- ベストアンサー率58% (3742/6450)
「プロパティ」(property)、ないし「アクセッサメソッド」を使う。 「objective-c」と組み合わせて、ネット検索すれば、いろいろ情報がヒットするので、それらで調べてください。
補足
ご回答ありがとうございます。 ネットで色々で調べてプロパティを設定してみたのですが、うまく取得できませんでした。 基本的な質問で申し訳ありませんがもう少しご享受頂けないでしょうか。 宜しくお願いいたします。 aClass:NSObject <UIApplicationDelegate> bClassのインスタンスを作成 インスタンス名:_bClass cClassのインスタンスを作成 インスタンス名:_cClass bClass:UIViewController UILabel *labelB @property UILabel *labelB ※実装部では@synthesizeしています cClass:UIViewController UILabel *labelC @property UILabel *labelC ※実装部では@synthesizeしています _bClassのメソッドで _cClass.labelCで値を取得しようとするとUnKnownとなります。
お礼
度重なるご回答を頂きありがとうございます。 ご指摘頂いた通り、Objective-Cの基本が理解できてないと、私自身自覚いたしております。 市販のSDK関係の本を参考に、比較的簡単に開発ができるので基本を理解せずに先走ってしまいました。 「急がば回れ」もう一度基本にたちかえって勉強しようと思います。 もし可能であれば、今回のケースのサンプルコードをご享受いただければ幸いです。 色々とご指摘頂きありがとうございました。今後とも宜しくお願い致します。