2011-01-25 3 views
1

コンテキスト:私は3つのビューを持っています。 1つの導入ビュー、アップロードビュー、およびメインビュー。 (それぞれのヘッダーを含む)のクラスとして、私はrootViewController(SwitchViewController)、IntroViewControllerとUploadViewControllerを持っています。表示される最初のビューはIntroViewです。ユーザーは、画像を選択し、バックIntroViewに行くためにもう一度ボタンを押してもらうUploadViewで、その後、UploadViewにそれらを取る(SwitchViewControllerで宣言された)ボタンを押します。Objective-C初心者。他のコントローラからコントローラのプロパティを変更しますか?

UIImagePickerControllerで画像を選択する間、ビューを切り替えるボタンは表示されず、UIImageViewも表示(画面)の上にロゴが表示されます。 UIImageViewとUIButtonは、どちらもSwitchViewControllerのヘッダーで宣言されています。

使用されるコードは:

UploadViewController.h

#import [...] //Imports 
@class SwitchViewController; 
@interface UploadViewController : 
UIViewController <UIImagePickerControllerDelegate, 
UINavigationControllerDelegate,UIActionSheetDelegate> { 
    UITextField *imageTextField; 
    UIImageView *uploadedImage; 
    SwitchViewController *switchViewController; 
[...] 
} 

@property (nonatomic, retain) SwitchViewController *switchViewController; 
@property (nonatomic, retain) IBOutlet UITextField *imageTextField; 
@property (nonatomic, retain) IBOutlet UIImageView *uploadedImage; 
[...] 
@end 

UploadViewController.m

[...] 
- (IBAction) selectImageButtonPressed { 
self.switchViewController.submitButton.hidden = YES; 
self.switchViewController.imageLogo.hidden = YES; 

[...] //continues 

私は質問が非常にある場合にはObjective-Cのように私を許してくださいにプログラミング最近始まりました必須。私は見て、APRESSの「iPhone 3開発の始まり」に従っています。しかし、それが基本を大いに理解するのに役立つとしても、時々私は迷うことがあります。

PS:それは依頼された場合SwitchViewController.hとの.mスニペットコードを提供することができ、質問に答えるために明確である場合。しかし、私はこのテキストがそのまま大きくなったと思った。

+0

あなたは正しい、正しくInterface Builderでアウトレットをリンクしていますか? –

+0

はい私はしました。私はちょうど確かめるために数回チェックした... – Joze

+0

@ジョーズあなたは3つのビューの写真を提供することができます。あなたの要件を理解するのは難しいです。あなたができるよりも簡単であれば、質問をもっと簡単にすることができます。 – Robin

答えて

0

私は、全体のコードをリファクタリングし、プログラム自体の一般的な構造を変更した後、私の問題を解決しました。今私はそれを制御するviewControllerで3つのビューとそれぞれがあります。彼が全員にアクセスできるので、ビューの切り替えはすべて代議員で行われます。そうすれば、すべてのコントローラーで、すべてのプロパティを難なくコントロールできます。 1つのビューに存在するオブジェクトの1つのプロパティを別のビューから変更することは、時には不可能ではない場合は難しく、むしろ不便です。 (私はまだ文のこれらの種類を行うにはアマチュアだけど)

この質問をするときに私が取ったアプローチがなされなければならなかったアプリケーションのための目が見える短いものでした。私は助けようとしたすべての人に感謝します。

0

@Joze switchViewControllerはクラスUploadViewControllerの変数ですので、その変数で何かすると、switchViewControllerビューには影響しません。その時点でswitchViewControllerビューを呼び出すときには、initWithNibName: bundle:を実行してから、ボタンとimageViewを非表示にして、switchViewController.delegate = self;のような処理をしてから、ビューをモーダルに呼び出すか、これまでどおりに呼び出す必要があります。

PS。そのスペルが正しいかどうか分からない。私は私の家でxcodeを持っていません。 私はあなたの問題がこれで解決することを願っています。

+0

私は実際にUploadViewControllerのviewDidLoadメソッドでそれを行いました。ここで私はそれが読みやすいと思ったものです:SwitchViewController * switchController = [[SwitchViewController alloc] initWithNibName:@ "SwitchViewController" bundle:nil]; \t self.switchViewController = switchController; \t [switchController release]; [super viewDidLoad];読みにくい場合や、もっとコードが必要な場合は教えてください。 – Joze

+0

私はあなたがビューをロードしたメソッドでこれを行う必要があるという意味はありません。 SwitchViewControllerを表示するときにこれを行う必要があります。ボタンが押されたときのように。 – Robin

+0

どのように他のビュー(SwitchViewController)を呼び出すのですか – Robin

関連する問題