zoukankan      html  css  js  c++  java
  • 视图控制器和导航模式二

    标签导航

      标签导航有一定的指导原则:标签栏位于屏幕下方,占有49点的屏幕空间,有事可以隐藏起来;为了点击方便,标签栏中的标签不能超过5个,如果超过5个,则最后的一个显示为“更多”,点击“更多”标签会出现更多的列表。

      标签导航模式的各个标签分别代表一个功能模块,各个功能模块之间相对独立。

      可以使用工程模板Tabbed Application创建标签导航模式的应用,现有两个场景(Scene),可添加或修改场景。添加场景:拖拽有个View controller到设计界面,按住control键从 Tab Bar Controller Sence拖拽到View controller,从弹出菜单中选择View controllers

    树形结构导航

     将导航控制器(UINavigationController)与表现结合使用,主要用于构建从属关系的导航。这种导航模式采用分层组织信息的方式,可以帮我们构建iOS效率型应用程序:相册应用,iPod Touch自带的邮件应用。可使用工程模板Master-Detail Application.

    运行效果图

    数据plist文件:

              

         视图的树形层级:

    类图结构:

    实例代码:

    1.ViewController : UIViewController

    @interface ViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>

    @property (weak, nonatomic) IBOutlet UITableView *tableView;

    @property (strong, nonatomic) NSDictionary *dictData;

    @property (strong, nonatomic) NSArray *listData;

    @end

    #import "ViewController.h"

    #import "CitiesViewController.h"

     @interface ViewController ()

     @end

     @implementation ViewController

     - (void)viewDidLoad {

        [super viewDidLoad];

        self.tableView.delegate = self;

        self.tableView.dataSource = self;

        

        NSBundle *bundle = [NSBundle mainBundle];

        NSString *path = [bundle pathForResource:@"plist" ofType:@"plist"];

         self.dictData = [[NSDictionary alloc]initWithContentsOfFile:path];

        self.listData = [self.dictData allKeys];

        self.title = @"城市信息";

    }

    - (void)didReceiveMemoryWarning {

        [super didReceiveMemoryWarning];

        // Dispose of any resources that can be recreated.

    }

    #pragma mark - UITableViewDataSource

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

        return [self.listData count];

    }

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

        static NSString *CellIdentifier = @"Cell";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

        if (cell == nil) {

            cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

        }

        NSInteger row = [indexPath row];

        cell.textLabel.text = [self.listData objectAtIndex:row];

        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

        return cell;

    }

    #pragma mark - UITableViewDelegate

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

        NSInteger row = [indexPath row];

        CitiesViewController *citiesViewController = [[CitiesViewController alloc]initWithStyle:UITableViewStylePlain];

        NSString *selectName = [self.listData objectAtIndex:row];

        citiesViewController.listData = [self.dictData objectForKey:selectName];

        citiesViewController.title = selectName;

        [self.navigationController pushViewController:citiesViewController animated:YES];

    }

    @end

    2.CitiesViewController : UITableViewController

    @interface CitiesViewController : UITableViewController<UITableViewDataSource,UITableViewDelegate>

     @property(strong,nonatomic)NSDictionary *listData;

    @end

    #pragma mark - Table view data source 

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

        return  [self.listData count];

    }

     - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

        static NSString *CellIdentifier = @"Cell";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

        if (cell == nil) {

            cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

        }

        NSInteger row = [indexPath row];

        NSString  *itemName = [[self.listData allKeys] objectAtIndex:row];

        NSDictionary *dict = [self.listData objectForKey:itemName];

        cell.textLabel.text = [dict objectForKey:@"name"];

        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

        return cell;

    }

    #pragma mark - UITableViewDelegate

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

        DetailViewController *detailViewController = [[DetailViewController alloc]initWithNibName:@"DetailViewController" bundle:nil];

        NSInteger row = [indexPath row];

        NSString  *itemName = [[self.listData allKeys] objectAtIndex:row];

        NSDictionary *dict = [self.listData objectForKey:itemName];

        detailViewController.url = [dict objectForKey:@"url"];

        NSString *name = [dict objectForKey:@"name"];

        detailViewController.title = name;

        [self.navigationController pushViewController:detailViewController animated:YES];

    }

    3.DetailViewController : UIViewController

    #import <UIKit/UIKit.h>

     @interface DetailViewController : UIViewController<UIWebViewDelegate>

    @property (weak, nonatomic) IBOutlet UIWebView *webView;

    @property(strong,nonatomic)NSString *url;

    @end

    @implementation DetailViewController

    - (void)viewDidLoad {

        [super viewDidLoad];

        // Do any additional setup after loading the view from its nib.

        self.webView.delegate = self;

        NSURL *url = [NSURL URLWithString:self.url];

        NSURLRequest *requst = [NSURLRequest requestWithURL:url];

        [self.webView loadRequest:requst];

    } 

    #pragma mark - UIWebViewDelegate

    - (void)webViewDidFinishLoad:(UIWebView *)webView{

        NSLog(@"Finish");

    }

    - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{

        NSLog(@"%@",[error description]);

    }

     @end

     注意:我们选择的工程模板不是导航控制器模板,所以需要自己添加导航控制器并将其作为根视图控制器。选中View Controller,然后打开菜单Editor -> Embed In ->Navigation Controller

  • 相关阅读:
    大数定理、中心极限定理、样本估计参数
    泰勒公式、Jenson不等式、切比雪夫不等式
    查询:分页、连接查询、自关联、子查询
    查询:排序Order by、聚合函数、分组groupby
    查询:基本查询、条件查询
    数据库和表的基本操作
    函数使用,增删改操作
    groupby
    统计分析函数
    pandas的基础使用
  • 原文地址:https://www.cnblogs.com/PJXWang/p/5478705.html
Copyright © 2011-2022 走看看