Problem数组
你想要快速的建立表视图xcode
Solutionapp
使用的UITableViewController视图控制器,默认状况下配备了一个表视图控制器
编码
Discussionatom
在iOS SDK中包含了一个很是方便的类称为的UITableViewController中收录预约义了里面一个表视图实例。为了利用这个类的优点,你必需要真正作的是建立一个子类的上述类的新类。在这里,我将引导您完成必要的步骤来建立一个新的Xcode项目,利用表视图控制器:spa
1.在Xcode中从菜单项目选择File->New->Project....net
2.在屏幕的左侧边,确保了iOS类别被选中。而后选择应用程序的子类别。在右手边,选择Empty Application,而后按下Next按钮,如图4-19所示code
3.在下一屏幕上,只需选择适合您的项目的名称。另外,还要确保一切,除了对本组织名称和公司标识在你的对话框是同样的对视了一眼,我证实给你在图4-20 。一旦你完成后,按[下一步]按钮。对象
4.在下一屏幕上,你有机会到你的应用程序保存到磁盘。只需保存该应用程序在一个地方,对你有意义,并按下Create按钮ci
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;
@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;
}
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协议的方法。