diff --git a/PBGitWindowController.h b/PBGitWindowController.h index d243a37..6935d6a 100644 --- a/PBGitWindowController.h +++ b/PBGitWindowController.h @@ -9,11 +9,16 @@ #import #import "PBGitRepository.h" +@class PBViewController; @interface PBGitWindowController : NSWindowController { __weak PBGitRepository* repository; int selectedViewIndex; IBOutlet NSView* contentView; - NSViewController* viewController; + + PBViewController *historyViewController; + PBViewController *commitViewController; + + PBViewController* viewController; } @property (assign) __weak PBGitRepository *repository; diff --git a/PBGitWindowController.m b/PBGitWindowController.m index 6cf01b5..4bc08b8 100644 --- a/PBGitWindowController.m +++ b/PBGitWindowController.m @@ -10,7 +10,6 @@ #import "PBGitHistoryController.h" #import "PBGitCommitController.h" - @implementation PBGitWindowController @@ -35,7 +34,11 @@ - (void)windowWillClose:(NSNotification *)notification { - [viewController removeView]; + NSLog(@"Window will close!"); + if (historyViewController) + [historyViewController removeView]; + if (commitViewController) + [commitViewController removeView]; } - (void) setSelectedViewIndex: (int) i @@ -49,16 +52,20 @@ { [self willChangeValueForKey:@"viewController"]; - if ([viewController view] != nil) - [(PBViewController *)viewController removeView]; + if (viewController != nil) + [[viewController view] removeFromSuperview]; switch (whichViewTag) { case 0: // swap in the "CustomImageViewController - NSImageView" - viewController = [[PBGitHistoryController alloc] initWithRepository:repository superController:self]; + if (!historyViewController) + historyViewController = [[PBGitHistoryController alloc] initWithRepository:repository superController:self]; + viewController = historyViewController; break; case 1: - viewController = [[PBGitCommitController alloc] initWithRepository:repository superController:self]; + if (!commitViewController) + commitViewController = [[PBGitCommitController alloc] initWithRepository:repository superController:self]; + viewController = commitViewController; break; }