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協議的方法。