IOS5基础之十四-----导航控制器和表视图--创建顶级视图

来源:互联网 发布:python 访问zookeeper 编辑:程序博客网 时间:2024/05/18 11:15

了解表视图之后,我们了解导航控制器,导航控制器和表视图没有必然的关联,但是在实际的运用当中他们是紧密相关的。

先了解一些基础知识。或者说是复习吧。

什么是栈? 

栈是一种常用的数据结构,采用后进先出的原则。可以理解我们把书一本一本的装到箱子里面,当我们取的时候是把最后放进去的书最先拿出来。

向栈中添加对象叫入栈(push)即把对象推到栈中。

第一个入栈的对象叫基栈。

最有一个入栈的对象叫栈顶。

从栈中删除对象的操作叫出栈(pop)。

这个导航项目由6个部分组成

1、展示按钮视图。2、校验表视图。3、行控制视图。4、可移动行视图。5、可删除行视图。6、可编辑详细信息视图。

接下来就创建项目。

创建的是以一个Empty Application创建的。

创建顶级视图

首先要创建一个顶级类命名为BIDFirstLevelController。然后在BIDAppDelegate头文件中添加代码如下:

#import <UIKit/UIKit.h>


@interface BIDAppDelegate :UIResponder <UIApplicationDelegate>


@property (strong,nonatomic) UIWindow *window;

@property (strong,nonatomic)UINavigationController *navController;//初始化一个导航条


@end


#import "BIDAppDelegate.h"

#import "BIDFirstLevelController.h"


@implementation BIDAppDelegate


@synthesize window =_window;

@synthesize navController;//实例化


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

    self.window = [[UIWindowalloc] initWithFrame:[[UIScreenmainScreen] bounds]];

    // Override point for customization after application launch.

    BIDFirstLevelController *first=[[BIDFirstLevelControlleralloc]initWithStyle:UITableViewStylePlain];//这个方法可以用来创建一个普通的或时分组的的表视图控制器,而不用借助nib文件。

    self.navController=[[UINavigationControlleralloc] initWithRootViewController:first];//传递顶层控制器,导航控制器用它来初始化内容

    [self.windowaddSubview:navController.view];//它是由导航控制器所提供的符合视图,有两项组成,屏幕顶部的导航栏,以及下面所显示的内容

    self.window.backgroundColor = [UIColorwhiteColor];

    [self.windowmakeKeyAndVisible];

    return YES;

}


其实这两个文件是最基础的初始化数据的时候必须加载的。所以导航条要添加在这里,它第一次就要出现的。

接下来创建内容视图的,BIDFirstLevelViewController,这个我们不会去创建实例,它单独的存在,我们便可以向接下来编写的其他控制器添加常规项目。可以理解为是一个抽象类。

实现代码如下:

#import <UIKit/UIKit.h>


@interface BIDFirstLevelController : UITableViewController


@property (strong,nonatomicNSArray *controllers;



@end


#import "BIDFirstLevelController.h"

#import "BIDSecondLevelViewController.h"


@implementation BIDFirstLevelController

@synthesize controllers;


-(void) viewDidLoad

{

    [super viewDidLoad];

    self.title=@"First Level";

    NSMutableArray *array=[[NSMutableArray alloc]init];//使用可变数组以迭代的方式添加新控制器。

    self.controllers=array;

}


-(void) viewDidUnload

{

    [super viewDidUnload];

    self.controllers=nil;

}


#pragma mark -

#pragma mark Table Data Source Methods

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section//返回数组控制器中的计数

{

    return [self.controllers count];

}


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

{

    static NSString *FirstLevelCell=@"FirstLevelCell";//充当表示某单元的键

    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:FirstLevelCell];

    if (cell==nil) {

        cell=[[UITableViewCell allocinitWithStyle:UITableViewCellStyleDefault reuseIdentifier:FirstLevelCell];

    }

    NSUInteger row=[indexPath row];//需要知道表视图显示那些行

    BIDSecondLevelViewController *controller=[controllers objectAtIndex:row];

    cell.textLabel.text=controller.title;

    cell.imageView.image=controller.rowImage;

    cell.accessoryType=UITableViewCellAccessoryDisclosureIndicator;

    return cell;

}


#pragma mark -

#pragma mark Table View Delegate Methods

-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath//用户单击某行后调用的方法

{

    NSUInteger row=[indexPath row];

    BIDSecondLevelViewController *nextController =[self.controllers objectAtIndex:row];//从对应于该行的数组中获取正确的控制器

    [self.navigationController pushViewController:nextController animated:YES];//将下一个控制器从数组中取出,并放入到导航控制器栈中

}


@end

这样就可以运行了,效果如下:这样就是把导航条添加进去,由于数组为空所以只能看到空行。


由于最近比较忙,这个学习还是精力不足,缓慢前进,总比不动好,逆水行舟不进则退。我要努力。。。。。。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 肛门的皱褶肿了怎么办 1月婴儿排便困难怎么办 吃完辣的痔疮肿了怎么办 肛裂怎么办兰州来医博.相信 胎儿脐带绕颈一周怎么办 郑大一附院怎么办合作医疗 痔疮包不消怎么办很疼 痔疮内扎手术后直肠窄小怎么办 2个月大的宝宝鼻塞怎么办 宝宝鼻屎比较深怎么办 来例假痔疮犯了怎么办 微医爽约过一次怎么办 炸完的薯条软了怎么办 学信网号码换了怎么办 学信网注册换手机了怎么办 学信网手机号码已被注册怎么办 学信网手机号码被注册了怎么办 去英国留学不会做饭怎么办 小米陶瓷刀钝了怎么办 橱柜的缝擦不到怎么办 悠悠球上油早了怎么办 买了没有esp的车怎么办 饥荒海难狗来了怎么办 饥荒海难拖网掉水里了怎么办 饥荒遇到了猪人怎么办 饥荒龙蝇赖在家不走怎么办 饥荒海难崩档了怎么办 gta5全是rpf文件怎么办 饥荒没有海象人营地怎么办 饥荒海滩猎犬来了怎么办 宝宝换牙门牙上长颗尖牙怎么办 肉卡在牙缝里怎么办 电脑做系统卡死怎么办 苹果6升级太卡怎么办 电脑玩不了联机饥荒怎么办 饥荒渡渡鸟死了一只怎么办 饥荒电脑联机植物生病怎么办 开车蹭到别人车怎么办 立定跳不会收腹怎么办 1岁宝宝有蛔虫怎么办 手机屏幕总是有网页跳出来怎么办