文档章节

4.9. Utilizing the UITableViewController for Easy

人生天地间
 人生天地间
发布于 2014/02/17 23:06
字数 1169
阅读 28
收藏 0

Problem

    你想要快速的创建表视图

Solution

使用的UITableViewController视图控制器,默认情况下配备了一个表视图控制器


Discussion

    在iOS SDK中包含了一个非常方便的类称为的UITableViewController中收录预定义了里面一个表视图实例。为了利用这个类的优势,你必须要真正做的是创建一个子类的上述类的新类。在这里,我将引导您完成必要的步骤来创建一个新的Xcode项目,利用表视图控制器:


1.在Xcode中从菜单项目选择File->New->Project...


2.在屏幕的左侧边,确保了iOS类别被选中。然后选择应用程序的子类别。在右手边,选择Empty Application,然后按下Next按钮,如图4-19所示


3.在下一屏幕上,只需选择适合您的项目的名称。另外,还要确保一切,除了对本组织名称和公司标识在你的对话框是一样的对视了一眼,我证明给你在图4-20 。一旦你完成后,按[下一步]按钮。


4.在下一屏幕上,你有机会到你的应用程序保存到磁盘。只需保存该应用程序在一个地方,对你有意义,并按下Create按钮


5.在xcode中选择 File -> New -> File…menu


6.在该对话框中,确保IOS是在左手边,而可可触摸就是被选中的子类别的主要类别。然后在对话框的右侧,选择Objective-C类,如图4-21


7.在下一屏幕上,你可以选择你的新类的超类。这个步骤是非常重要的。请确保您设置您的超类的UITableView控制器。另外,还要确保你的设置,其余都是一样。输入完成后,按Next按钮。

8.在下一屏幕上,你得到机会,以节省您的表视图控制器项目。继续将其保存为的ViewController类,然后按下Create按钮


9.在你的应用程序委托的执行文件,记住要导入此视图控制器的头文件,然后创建这个类的一个实例,并将其设置为您的应用程序的根视图控制器,如下所示:


 #import “AppDelegate.h

 #import “ViewController.h


@implementation AppDelegate


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


    ViewController *controller = [[viewController alloc] initWithStyle:UITableViewStylePlain];


    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen] bounds];

    

    self.window.rootViewController = controller;

    

    self.window.backgroundColor = [UIColor whiteColor];

    [self.window makeKeyAndVisible];

     return YES;


现在,如果你尝试编译你的项目,你会看到,编译器会为您提供以下警告:


viewController.m:47:2: potentially incomplete method implementation

viewController.m:54:2: Incomplete method implementation


这个警告告诉你,你需要注意看你的视图控制器的实现文件。如果你打开这个文件,你会看到,苹果已经插入#waring宏在表视图控制器类模板,它是造成这些警告将显示在屏幕上。一个警告被放置在numberOfSectionsInTableView内侧:方法,另一种是内部实现代码如下:numberberOfRowsInSection :方法。我们看到这些警告的原因是,我们没有编码这些方法的逻辑。该表的视图控制器必须具有最低限度的信息是部分显示的数目,要显示的行数,以及要显示的每一行的单元对象。你没有看到对于缺乏细胞对象实现的任何警告的原因是,苹果在默认情况下提供了一个虚拟实现这个方法,为您创建一个空单元格

 


         在默认情况下,该表视图控制使数据源和表视图的委托。你不必单独为表视图指定一个委托或数据源。



现在,让我们进入我们的表视图控制器的实现,并确保我们有一个字符串数组(只是作为一个例子) ,我们可以反馈到我们的表视图


#import “ViewController.h

 

static NSString *CellIdentifier = @“Cell”;


@interface ViewController ()

@property (nonatomic, strong) NSArray *allItems;

 @end


@implementation ViewController

- (id)initWithStyle:(UITableViewStyle)style

{

    self = [super initWithStyle:style];

    if (self){


      //custom initialization

     self.allItems = @[@“Anthony Robbins”,  @“Steven Paul Jobs”,@“Paul Gilbert”,@“Yngwie Malmsteen”];


      [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:CellIdentifier];


      }

        return self;

}



- (void) viewDidLoad{


     [super viewDidLoad];

}



- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{


    return 1;

}


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


      return self.allItems.count;

}



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



      UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier  forIndexPath:indexPath];


   cell.textLabel.text = self.allItems[indexPath.row];


   return cell;

}

@end



Now if we run our app, we will see something similar to what is shown in Figure 4-23.


图:4-23. Our strings are properly displayed in the table view

这几乎是所有有知道关于表视图控制器。记住,如前面提到的,你的表视图控制器是你的表视图的委托和数据源了。所以,你可以实现就在你的表视图控制器的实现在UITableViewData源协议的方法以及该UITableViewDelegate协议的方法。




© 著作权归作者所有

共有 人打赏支持
人生天地间
粉丝 12
博文 47
码字总数 42508
作品 0
常州
程序员
私信 提问
BRANCHY OPENCART 2.X 自适应主题模板 ABC-0572

BRANCHY OPENCART 2.X 自适应主题模板 ABC-0572 FEATURES HTML5 and CSS3 Fully RESPONSIVE Theme Using Google Fonts Support Multiple Language Included RTL Language Support No Core M......

OpenCart中国
2015/05/27
0
0
FASHION STORE OPENCART 2.X 自适应主题模板 ABC-0588

FASHION STORE OPENCART 2.X 自适应主题模板 ABC-0588 FEATURES HTML5 and CSS3 Fully RESPONSIVE Theme Using Google Fonts Support Multiple Language Included RTL Language Support No ......

OpenCart中国
2015/05/28
0
0
Kids Store - OpenCart 自适应主题模板 ABC-0022

KIDS STORE - OPENCART 自适应主题模板 ABC-0022 FEATURES Get FREE Lifetime Updates Get FREE On-Going Support HTML5 and CSS3 Fully RESPONSIVE Theme Using Google Fonts Support Multi......

OpenCart中国
2015/07/03
0
0
Fashion Store OpenCart 2.X 自适应主题模板 ABC-0588

Fashion Store OpenCart 2.X 自适应主题模板 ABC-0588 FASHION STORE OPENCART 2.X 自适应主题模板 ABC-0588 FEATURES HTML5 and CSS3 Fully RESPONSIVE Theme Using Google Fonts Support M......

OpenCart中国
2015/05/05
0
0
UIRefreshControl使用总结

UIRefreshControl 的使用还是比较简单的,看一下 UIRefreshControl 的定义,基本就知道怎么用了。 UIRefreshControl 是专门为 UITableViewController 设计的,官方不建议在非 UITableViewCon...

CavinTang
2016/01/29
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Python中判断字符串是否包含中文

Python import reRE = re.compile(u'[\u4e00-\u9fa5]', re.UNICODE)match = re.search(RE, str)if match is None:# 没有包含中文字符 参考 Python regular expressions return true/f......

亚林瓜子
26分钟前
0
0
《CNCF × Alibaba 云原生技术公开课》正式首播

《CNCF × Alibaba 云原生技术公开课》立即观看:点击立即观看 云原生最初来描述云上应用的典型架构与特性,随着容器、Kubernetes、Serverless、FaaS技术的演进,CNCF(云原生计算基金会)把...

mcy0425
26分钟前
2
0
网站漏洞如何修复网站程序问题

jeecms 最近被爆出高危网站漏洞,可以导致网站被上传webshell木马文件,受影响的版本是jeecms V6.0版本到jeecmsV7.0版本。该网站系统采用的是JAVA语言开发,数据库使用的是oracle,mysql,sql数...

网站安全
29分钟前
2
0
git 中“warning: CRLF will be replaced by LF in”解决方案

https://stackoverflow.com/questions/5834014/lf-will-be-replaced-by-crlf-in-git-what-is-that-and-is-it-important...

qwfys
34分钟前
1
0
Spring Boot配置ssl证书启用HTTPS协议

一 、点睛 SSL是为网络通信提供安全及数据完整性的一种安全协议,SSL在网络传输层对网络连接进行加密。SSL协议位于TCP/IP协议和各种应用层协议之间,为数据通信提供安全支持。 SSL协议分为两...

故久呵呵
35分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部