1

Apple の PageControl の例に似たプロジェクトがあります。UIScrollView と UIToolbar を含む UIViewController "PhotoViewController" があります。UIScrollView は、別の XIB と UIViewController "PhotoScrollViewController" を読み込みます。

PhotoScrollViewController には、画像を表示する UIButton があります。このボタンに IBAction があり、クリックして PhotoViewController の UIToolbar を表示/非表示にしたいと考えています。

PhotoViewController.h には

@interface PhotoViewController : UIViewController <UIScrollViewDelegate> {
  IBOutlet UIToolbar *toolBar;
  ..
}

@property (nonatomic, retain) UIToolbar *toolBar;

PhotoScrollViewController.h に PhotoViewController.h をインポートしてインターフェイスに追加し、次のような関数を介してアクセスしようとするなど、PhotoScrollViewController でいくつかのことを試しました。

@implementation PhotoScrollViewController

- (IBAction)toggleMenu {
  photoViewController.toolBar.hidden = NO;
}

しかし、これはうまくいきません。removeFromSuperView、self.parentViewControllerなども試しました。このツールバーを非表示にする方法がわかりません (アルファ版も試しましたが、ツールバーにまったくアクセスできません)。

代わりに、toolBar.hidden = YES を使用して PhotoViewController に関数を追加してみました。これは、PhotoViewController から関数を実行すると機能しますが、PhotoScrollViewController (.h に PhotoViewController *photoViewController を使用) からアクセスすると機能しません。

@implementation PhotoScrollViewController

- (IBAction)toggleMenu {
  photoViewController.toolBar.hidden = NO;
  [photoViewController toggleTopMenu];
  [[PhotoViewController alloc] toggleTopMenu];
}

@implementation PhotoViewController

- (IBAction)toggleTopMenu {
  toolBar.hidden = NO;
}

代わりにツールバーを PhotoScrollViewController に追加しようとしましたが、切り替えることはできますが、メインの UIViewController に PhotoViewController を閉じるように指示する方法がわかりません。 UIViewControllers の間で適切に..そして私が読んだドキュメントは、私が試したことに従っているようです。

4

2 に答える 2

1

[photoViewController.navigationController setToolbarHidden:YESアニメーション:NO];

これは、photoViewControllerがUINavigationControllerにプッシュされた場合にのみ機能します。それ以外の場合は、toolBar.hidden=YESを設定します。

于 2011-03-13T21:14:24.693 に答える
1

基本的に、あるコントローラーを別のコントローラーから参照できないことが問題のようです。これは、さまざまな方法で行うことができます。

1: アプリケーションのロード時にアプリケーション デリゲートにコントローラーを作成し、それらへの参照をデリゲートのプロパティなどとして公開します。

2: PhotoScrollViewController を作成または表示するときに、参照を PhotoViewController に渡します。あなたはこれがうまくいかないと言います:

 @implementation PhotoScrollViewController

 - (IBAction)toggleMenu {
     photoViewController.toolBar.hidden = YES;
 }

photoViewController 参照が nil の場合、これが機能しない唯一の方法です。どこで/どのように設定しますか?

于 2010-01-18T21:01:26.353 に答える