4.9. Utilizing the UITableViewController for Easy

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;

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

相關文章
相關標籤/搜索