Ios-ui-elements-tableview

提供:Dev Guides
移動先:案内検索

iOS-テーブルビュー

テーブルビューの使用

これは、多数のセル(通常は再利用可能なセル)で構成される垂直にスクロール可能なビューを表示するために使用されます。 ヘッダー、フッター、行、セクションなどの特別な機能があります。

重要なプロパティ

  • 代表者
  • 情報源
  • rowHeight
  • sectionFooterHeight
  • sectionHeaderHeight
  • separatorColor
  • tableHeaderView *tableFooterView

重要な方法

- (UITableViewCell* )cellForRowAtIndexPath:(NSIndexPath *)indexPath
- (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths
withRowAnimation:(UITableViewRowAnimation)animation
- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier
- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier
forIndexPath:(NSIndexPath *)indexPath
- (void)reloadData
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths
withRowAnimation:(UITableViewRowAnimation)animation
- (NSArray *)visibleCells

サンプルコードと手順

ステップ1 *-以下に示すように、 *ViewController.xib にtableviewを追加しましょう。

iOSチュートリアル

ステップ2 *-データソースとデリゲートを右クリックして選択し、tableviewの *delegatedataSourcefile owner に設定します。 dataSourceの設定を以下に示します。

iOSチュートリアル

ステップ3 *-tableViewの *IBOutlet を作成し、 myTableView という名前を付けます。 以下の画像に示されています。

iOSチュートリアル iOSチュートリアル

  • ステップ4 *-次に、テーブルビューに表示されるデータを保持するためのNSMutableArrayを追加します。

ステップ5 *-ViewControllerは *UITableViewDataSource および UITableViewDelegate プロトコルを採用する必要があります。 ViewController.h は次のようになります。

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UITableViewDataSource,
   UITableViewDelegate> {
   IBOutlet UITableView *myTableView;
   NSMutableArray *myData;
}
@end

ステップ6 *-必要なtableviewデリゲートおよびdataSourceメソッドを実装する必要があります。 更新された *ViewController.m は次のとおりです-

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
   [super viewDidLoad];
  //table view data is being set here
   myData = [[NSMutableArray alloc]initWithObjects:
   @"Data 1 in array",@"Data 2 in array",@"Data 3 in array",
   @"Data 4 in array",@"Data 5 in array",@"Data 5 in array",
   @"Data 6 in array",@"Data 7 in array",@"Data 8 in array",
   @"Data 9 in array", nil];
  //Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning {
   [super didReceiveMemoryWarning];
  //Dispose of any resources that can be recreated.
}

#pragma mark - Table View Data source
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:
   (NSInteger)section {
   return [myData count]/2;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:
   (NSIndexPath *)indexPath {
   static NSString *cellIdentifier = @"cellID";

   UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
   cellIdentifier];

   if (cell == nil) {
      cell = [[UITableViewCell alloc]initWithStyle:
      UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
   }

   NSString *stringForCell;

   if (indexPath.section == 0) {
      stringForCell= [myData objectAtIndex:indexPath.row];
   } else if (indexPath.section == 1) {
      stringForCell= [myData objectAtIndex:indexPath.row+ [myData count]/2];
   }
   [cell.textLabel setText:stringForCell];
   return cell;
}

//Default is 1 if not implemented
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
   return 2;
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:
   (NSInteger)section {
   NSString *headerTitle;

   if (section==0) {
      headerTitle = @"Section 1 Header";
   } else {
      headerTitle = @"Section 2 Header";
   }
   return headerTitle;
}

- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:
   (NSInteger)section {
   NSString *footerTitle;

   if (section==0) {
      footerTitle = @"Section 1 Footer";
   } else {
      footerTitle = @"Section 2 Footer";
   }
   return footerTitle;
}

#pragma mark - TableView delegate

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:
   (NSIndexPath *)indexPath {
   [tableView deselectRowAtIndexPath:indexPath animated:YES];
   UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
   NSLog(@"Section:%d Row:%d selected and its data is %@",
   indexPath.section,indexPath.row,cell.textLabel.text);
}
@end

ステップ7 *-アプリケーションを実行すると、次の *output が得られます-

iOSチュートリアル