1

コンテキスト:私には3つの見方があります。1つの紹介ビュー、アップロードビュー、およびメインビュー。クラスとして(それぞれのヘッダーを使用して)、rootViewController(SwitchViewController)、IntroViewController、UploadViewControllerがあります。最初に表示されるビューはIntroViewです。ユーザーは、UploadViewに移動するボタン(SwitchViewControllerで宣言されている)を押してから、UploadViewで画像を選択し、もう一度ボタンを押してIntroViewに戻ります。

ユーザーが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の「BeginningiPhone3Development」を見てフォローしています。しかし、それが基本を大いに理解するのに役立つとしても、時々私は迷子になります。

PS:質問に答える方が明確な場合は、質問があればSwitchViewController.hおよび.mスニペットコードを提供できます。でも、この文章はそのまま大きいと思いました。

4

2 に答える 2

0

@Joze私はあなたの問題switchViewControllerがクラスの変数であることを理解していると思うUploadViewControllerので、その変数で何かをしてもswitchViewControllerビューには影響しません。したがって、その時点でswitchViewControllerビューを呼び出すときはinitWithNibName: bundle:、ボタンとimageViewを非表示にしてから、switchViewController.delegate = self;モーダルまたは任意の方法でビューを呼び出す必要があります。

PS。そのつづりが正しいかどうかわかりません。私の家にはxcodeがありません。あなたの問題がこれで解決することを願っています。

于 2011-01-25T15:29:53.947 に答える
0

コード全体をリファクタリングし、プログラム自体の一般的な構造を変更した後、問題を解決しました。これで、3 つのビューがあり、それぞれにそれを制御するための viewController があります。デリゲートは全員にアクセスできるため、すべてのビューの切り替えはデリゲートで行われます。そうすれば、すべてのコントローラーですべてのプロパティを問題なく制御できます。あるビューに存在するオブジェクトの 1 つのプロパティを別のビューから変更することは困難であり、場合によっては不可能ではないにしても不便です。

この質問をするときに私が取ったアプローチは、実行しなければならないアプリケーションに対して近視眼的でした。助けようとしてくれたすべての人に感謝します。

于 2011-02-09T10:32:37.817 に答える