iOS.iPad.01.UISplitViewController

一、案例介紹:演示UISplitViewController的基本使用,如圖01,02,點擊左側MasterView中的行會改變右側DetailView中的顏色。atom

圖01圖02spa

二、案例步驟:設計

2.一、選擇Simple View Aplication新建項目,如圖03;指針

圖03code

2.二、生成項目結構如圖04,而後刪除CiPad01ViewController.h、CiPad01ViewController.m,打開Main.storyboard,再把自動生成的Ci Pad01 View Controller Scene刪除。blog

圖04事件

2.三、新增如下文件,如圖05
rem

圖05it

2.四、代碼io

 

#import <UIKit/UIKit.h>
#import "CiPad01DetailViewController.h"


@interface CiPad01MasterViewController : UITableViewController

// 左側「MasterView」中數據集合
@property (nonatomic,strong)  NSArray *listData;

// 右側「DetailView」指針,行選中事件須要用
@property (strong,nonatomic) CiPad01DetailViewController *detailViewController;

@end

 

#import "CiPad01MasterViewController.h"

@interface CiPad01MasterViewController ()

@end

@implementation CiPad01MasterViewController

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // 一、初始化左側「MasterView」中數據集合
    self.listData = [[NSArray alloc] initWithObjects:@"Blue View",@"Yellow View", nil];
    
    // 二、初始化右側「DetailView」指針
    self.detailViewController = (CiPad01DetailViewController *)[self.splitViewController.viewControllers lastObject];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

#pragma mark - Table view data source

// UITableViewDataSource協議方法,非必須實現,返回表視圖的節數,默認一節
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

// UITableViewDataSource協議方法,必須實現,返回某節的行數
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 2;
}

// UITableViewDataSource協議方法,必須實現,爲表視圖單元格提供數據
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    
    // 一、獲取可重用單元格,若是爲空直接alloc一個
    static NSString *cellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
    if (cell == nil) {
        
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    }
    
    // 二、根據行號給單元格加上主標題
    NSInteger row = [indexPath row];
    cell.textLabel.text = [self.listData objectAtIndex:row];
    
    return cell;
}

#pragma mark - Table view delegate

// UITableViewDelegate協議方法,根據選中的行號更新「DetailView」
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSInteger row = [indexPath row];
    [self.detailViewController updateDetailView:row];
}
@end
#import <UIKit/UIKit.h>
#import "CiPad01BlueViewController.h"
#import "CiPad01YellowViewController.h"

@interface CiPad01DetailViewController : UIViewController

// 指向「Main.storyboard」中「Storyboard ID == blueViewController」的控制器
@property (strong,nonatomic) CiPad01BlueViewController *blueViewController;

// 指向「Main.storyboard」中「Storyboard ID == yellowViewController」的控制器
@property (strong,nonatomic) CiPad01YellowViewController *yellowViewController;

// 根據行號更新DetailView
- (void) updateDetailView:(NSInteger)row;


@end
#import "CiPad01DetailViewController.h"

@interface CiPad01DetailViewController ()

@end

@implementation CiPad01DetailViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // 一、初始化blueViewController、yellowViewController
    self.blueViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"blueViewController"];
    
    self.yellowViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"yellowViewController"];
    
    // 二、默認藍色視圖爲DetailView
    [self.view addSubview:self.blueViewController.view];
    
}

// 根據行號更新DetailView
- (void) updateDetailView:(NSInteger)row
{
    if (row == 0) {//藍色
        
        if (self.yellowViewController.view.superview) {//黃色視圖存在則移除
            [self.yellowViewController.view removeFromSuperview];
        }
        if (self.blueViewController.view.superview == nil) {//添加藍色視圖存
            [self.view addSubview: self.blueViewController.view ];
        }
    } else {
        if (self.blueViewController.view.superview) {//藍色視圖存在則移除
            [self.blueViewController.view removeFromSuperview];
        }
        if (self.yellowViewController.view.superview == nil) {//添加黃色視圖存
            [self.view addSubview: self.yellowViewController.view ];
        }
    }
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

 

 

2.五、拖拽Split View Controller到設計界面,如圖06,刪除紅框中的導航控制器。

圖06

2.六、如圖07,將02,04的Custom Class分別改成CiPad01MasterViewController、CiPad01DetailViewController;拖拽兩個View Controller到設計界面分別爲0五、06,背景色分別設置爲藍色、黃色,Custom Class 分別設置爲CiPadBlueViewController、CiPadYellowViewController,Size都設置爲Detail。

 圖07

2.七、如圖07,將01的Orientation設置爲Landscape(橫屏),command + r。

相關文章
相關標籤/搜索