16

ストーリーボードと新しい NSTabViewController クラスを使用して、アプリの設定パネルを作成しようとしています。

動作させることはできますが、ストーリーボードのトランジション設定は無視されているようです。ウィンドウのサイズが瞬時に変化して、あるタブから次のタブにジャンプするだけです。

オートレイアウトを使うか使わないかにもよるかなと思ったのですが、トグルしてもトランジションの挙動は変わらないようでした。

「Propagates title」設定もチェックしています。タブ項目のラベルまたはビュー コントローラーのタイトルを取得し、それをウィンドウ タイトルとして伝達することを期待していましたが、そうではないようです。

誰かがこれを機能させましたか?

これは私がテストしている簡単なサンプルアプリです: https://www.dropbox.com/s/roxaplxy5gtlqns/Again.zip?dl=0

更新: ピエールのおかげでこれが機能しました。次のように NSTabViewController をサブクラス化することで、素敵な移行設定ウィンドウを作成しました。

@implementation MCPreferencesTabViewController

-(void)tabView:(NSTabView *)tabView willSelectTabViewItem:(NSTabViewItem *)tabViewItem
{
    [super tabView:tabView willSelectTabViewItem:tabViewItem];

    NSTabViewItem *currentTabItem = tabView.selectedTabViewItem;
    currentTabItem.view.hidden = YES;
    tabViewItem.view.hidden = YES;

    NSWindow *window = self.view.window;
    NSSize contentSize = tabViewItem.view.fittingSize;
    NSSize newWindowSize = [window frameRectForContentRect:(CGRect){CGPointZero, contentSize}].size;

    NSRect frame = [window frame];
    frame.origin.y += frame.size.height;
    frame.origin.y -= newWindowSize.height;
    frame.size = newWindowSize;

    [self.view.window setFrame:frame display:NO animate:YES];
}

- (void)tabView:(NSTabView *)tabView didSelectTabViewItem:(NSTabViewItem *)tabViewItem
{
    [super tabView:tabView didSelectTabViewItem:tabViewItem];
    tabViewItem.view.hidden = NO;
}

@end
4

3 に答える 3

1

Or in viewDidLoad() for the NSTabViewController, include

    self.tabView.delegate = self
于 2016-05-12T00:44:57.013 に答える