「ウィザード」のようなものになることを目的として、単純なウィンドウを作成しました (Apple のガイドラインでは基本的に禁止されていることは知っていますが、顧客を説得しようとしましたが、何でも.
これは単純なビューで、内部に 2 つのカスタム ビューがあり、1 つは「前へ」と「次へ」ボタンを含む下部にあり、上部にはスペースの大部分を占める大きなビューがあります。
下のビューを「NavigationView」、上のビューを「ContainerView」と呼びました。
ユーザーが「次へ」ボタンと「前へ」ボタンを使用してナビゲートする一連のビューを保持する配列を作成しました。
だから、ここに私のコードがあります。
- (IBAction) next:(id)sender{
currentViewIndex++;
[self animatePushView:YES];
}
- (IBAction)previous:(id)sender{
currentViewIndex--;
[self animatePushView:NO];
}
- (void) animatePushView:(BOOL)forward{
NSView *nextView = [viewCollection objectAtIndex:currentViewIndex];
for (NSView *subView in [containerView subviews]) {
[subView removeFromSuperview];
}
[containerView addSubview:nextView];
[nextView setFrame:containerView.bounds];
[containerView setNeedsDisplay:YES];
}
それはかなり簡単だと思います。次に表示されるビューを含む配列があります。
何が起こるかというと、ContainerView の左下部分の中央に次のビューが表示されるということです。なぜこれが起こるのですか?
また、ご想像のとおり、私はかなり長い間 Objective-C に取り組んできましたが、ビューを管理する初心者です。ありがとう!
編集:
追加するのを忘れていました: これらのビューの一部はサイズが異なります。ビューのサイズに応じてウィンドウのサイズを変更できるようにしたいと考えています。