zoukankan      html  css  js  c++  java
  • iOS.iPad.01.UISplitViewController

    1、案例介绍:演示UISplitViewController的基本使用,如图01,02,点击左侧MasterView中的行会改变右侧DetailView中的颜色。

    图01图02

    2、案例步骤:

    2.1、选择Simple View Aplication新建项目,如图03;

    图03

    2.2、生成项目结构如图04,然后删除CiPad01ViewController.h、CiPad01ViewController.m,打开Main.storyboard,再把自动生成的Ci Pad01 View Controller Scene删除。

    图04

    2.3、新增以下文件,如图05

    图05

    2.4、代码

    #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];
        
        // 1、初始化左侧“MasterView”中数据集合
        self.listData = [[NSArray alloc] initWithObjects:@"Blue View",@"Yellow View", nil];
        
        // 2、初始化右侧“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
    {
        
        // 1、获取可重用单元格,如果为空直接alloc一个
        static NSString *cellIdentifier = @"Cell";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
        if (cell == nil) {
            
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
        }
        
        // 2、根据行号给单元格加上主标题
        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];
        
        // 1、初始化blueViewController、yellowViewController
        self.blueViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"blueViewController"];
        
        self.yellowViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"yellowViewController"];
        
        // 2、默认蓝色视图为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.5、拖拽Split View Controller到设计界面,如图06,删除红框中的导航控制器。

    图06

    2.6、如图07,将02,04的Custom Class分别改为CiPad01MasterViewController、CiPad01DetailViewController;拖拽两个View Controller到设计界面分别为05、06,背景色分别设置为蓝色、黄色,Custom Class 分别设置为CiPadBlueViewController、CiPadYellowViewController,Size都设置为Detail。

     图07

    2.7、如图07,将01的Orientation设置为Landscape(横屏),command + r。

  • 相关阅读:
    欧拉公式
    isap的一些想法
    错误合集
    Hello World
    PAT (Advanced Level) Practice 1068 Find More Coins
    PAT (Advanced Level) 1087 All Roads Lead to Rome
    PAT (Advanced Level) 1075 PAT Judge
    PAT (Advanced Level) 1067 Sort with Swap(0, i)
    PAT (Advanced Level) 1017 Queueing at Bank
    PAT (Advanced Level) 1025 PAT Ranking
  • 原文地址:https://www.cnblogs.com/cqchen/p/3771569.html
Copyright © 2011-2022 走看看