0

最初に、アプリケーションのメイン ウィンドウ、つまりイメージ ビュー (背景用) に独自のセットアップを行い、その上に一連のボタンを配置しました。ユーザーがボタンをタップすると、それぞれのレッスンが開始されます。つまり、ユーザーは対応する画面に移動します。つまり、ウィンドウのコンテンツ ビューにビューを追加します。

[self.window.contentView addSubview:self.lessonScreen.view];

実際には、ウィンドウでビュー(カスタムビュー)を取得し、それにビューを追加し続ける(ナビゲーション用)というアプローチがあることを私は知っています。次に、メイン画面 (ウィンドウ) に移動するために、そのビューを非表示にするだけです。しかし、ウィンドウのコンテンツ ビューを介してビューを追加するアプローチに従っています。

ただし、ビューは正常に追加されますが、ホーム画面に移動できません。さまざまな方法を試しましたが、以下は私が従った方法の1つです:

[[window contentView] setHidden:YES];

ウィンドウが空白になり、メイン ビューも消えます。

また、Windowsコンテンツビューサブビューのビューを列挙して同じものを削除しようとしましたが、クラッシュが発生し、この場合も同じ空白の画面が表示されます:(

私はまた、私の問題を解決しなかった質問あちこちで経験しました。

ユーザーナビゲーション用のメインメニューボタンがあるので、メイン画面にジャンプするためにメインウィンドウからコンテンツビューを削除する方法を教えてください。

どんな助けでも大歓迎です、ありがとう:)

4

2 に答える 2

0

私の基本的な基盤は適切ではありませんでした。以前は、メイン ビュー コントローラーを処理する独自のクラスを作成していませんでした。それが物事が奇妙になった理由です。

独自の NSViewController クラスを作成してメイン メニュー ビューを作成し、- (void)applicationDidFinishLaunching:(NSNotification *)aNotificationappDelegate ファイルのメソッドに追加してウィンドウのコンテンツ ビューと同じものを追加します。

self.mainViewController = [[MainViewController alloc]initWithNibName:@"MainViewController" bundle:nil];
self.window.contentView = _mainViewController.view;

独自のビューをウィンドウのコンテンツ ビューに追加し始めたので、ホーム画面に移動するために、コンテンツ ビューを非表示にする必要はなく、代わりにホーム ビューをウィンドウのコンテンツ ビューとして割り当てます。

-(IBAction)topicButton:(id)sender
{
    [AppDelegate sharedInstance].mainViewController = [[MainViewController alloc]initWithNibName:@"MainViewController" bundle:nil];
    [[AppDelegate sharedInstance].window setContentView:[AppDelegate sharedInstanceofAppDelegate].mainViewController.view];
}

注:ここで [AppDelegate sharedInstance] は、アプリ デリゲート クラスのインスタンスです。

+(AppDelegate *)sharedInstance
{
    if (!sharedAppDelegate) {
        sharedAppDelegate = (AppDelegate *)[[NSApplication sharedApplication]delegate];
    }
    return sharedAppDelegate;
}

以上で、トピックまたはメインメニューボタンがクリックされたときに、ユーザーをホーム画面に移動できるようになりました:)

心配してくれたすべての人に感謝します:)

于 2014-07-08T09:55:36.043 に答える
0

このメソッドを適切なボタンまたはメニュー項目に接続します

- (IBAction)deliteAllSubviews:(id)sender {

    NSArray* views = [[window contentView]subviews];

    for (NSView* view in views) {   
        [view removeFromSuperview];
    }
}
于 2014-07-02T14:33:06.260 に答える