使用MGSplitViewController建立多個detailViewController的工程

習慣了不用xib文件,寫的是個純代碼的工程,所以模板選擇的“empty application”


1、建立好空工程後,導入MGSplitViewController的三個類

ARC工程別忘了添加-fno-objc-arc

2、AppDelegate的配置= =

(1).h文件

a) 添加一個屬性

@property (nonatomic, retain) MGSplitViewController *splitViewController;

(需要包含#import "MGSplitViewController.h")


(2).m文件

a) 需要包含最初顯示的rootViewController和首個detailViewController

b) - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    
    //左邊管理界面
    RootViewController* root = [[RootViewController alloc] init];
    UINavigationController* rootNav = [[UINavigationController alloc] initWithRootViewController:root];
    //右邊第一個詳情界面
    firstDetailViewController* first = [[firstDetailViewController alloc] init];
    UINavigationController* detailNav = [[UINavigationController alloc] initWithRootViewController:first];
    
    self.splitViewController = [[MGSplitViewController alloc] init];
    self.splitViewController.viewControllers = [NSArray arrayWithObjects:rootNav, detailNav, nil];
    self.splitViewController.showsMasterInPortrait = YES;//豎屏時也顯示,顯示寬度需要設置MGSplitViewController的MG_DEFAULT_SPLIT_POSITION宏定義值
    self.window.rootViewController = self.splitViewController;

    
    
    return YES;
}

這裏簡單說明一下,splitViewController的viewControllers必須是兩個,分別表示的是左邊的管理頁面和右邊的詳情頁面,這個根據需要任意設置。後面點擊左邊的rootViewController變換右邊的detailViewController也是通過重新設置這一屬性實現的

這個時候運行,應該就可以看到初始時分屏的效果了


3、變換左後的頁面

(1)AppDelegate.h中添加三個方法

#pragma mark -- toolKits
-(void)swtichDetailViewController:(id)controller;//切換右邊詳情試圖
-(void)toggleMasterViewController;//切換rootViewController的顯示和隱藏
+(AppDelegate*)sharedDelegate;


(2)AppDelegate.m中實現

#pragma mark -- toolKits
-(void)swtichDetailViewController:(id)controller
{
    //保留原有的rootViewController
    id nav = [self.splitViewController.viewControllers objectAtIndex:0];
    //新的detailViewController
    UINavigationController* nav2 = [[UINavigationController alloc] initWithRootViewController:controller];
    self.splitViewController.viewControllers = [NSArray arrayWithObjects:nav, nav2, nil];
}

-(void)toggleMasterViewController//切換rootViewController的顯示和隱藏
{
    [self.splitViewController toggleMasterView:nil];
}

+(AppDelegate*)sharedDelegate
{
    return (AppDelegate*)[[UIApplication sharedApplication] delegate];
}



在需要的地方調用[[AppDelegate sharedDelegate] swtichDetailViewController:secondDetailVC];就可以了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章