你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> IOS-UITableView入門(2)

IOS-UITableView入門(2)

編輯:IOS開發綜合

1.對於TableView ,每個item的視圖基本都是一樣的。不同的只有數據。

IOS提供了一種緩存視圖跟數據的方法。在 -UITableViewCell *) tableView:cellForRowAtIndexPath:

//創建一個用於緩存的標示
    static NSString *ID=@"CellTable";
    //先從緩存中取得UITableViewCell
    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:ID];
    //如果取不到,則代碼創建。
    if (cell==nil) {
        cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];
    }

2

//創建系統提供的每個item右邊的圖標
        cell.accessoryType=UITableViewCellAccessoryCheckmark;

3.通過動畫修改某個item的顯示

[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];

4.通過動畫刪除某個item

[self.tableView deleteRowsAtIndexPaths:self.indexPaths withRowAnimation:UITableViewRowAnimationLeft];

CSZViewController.h 整體代碼如下:聲明TableView的協議和數據源

#import 

@interface CSZViewController : UIViewController 

@property (weak, nonatomic) IBOutlet UITableView *tableView;

- (IBAction)trashClick:(id)sender;

@end

CSZViewController.m 有關TableView代碼如下:

#pragma mark - dataSource
#pragma mark 每列行數
- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.array.count;
}

#pragma mark 創建每行的View
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //創建一個用於緩存的標示
    static NSString *ID=@"CellTable";
    //先從緩存中取得UITableViewCell
    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:ID];
    //如果取不到,則代碼創建。
    if (cell==nil) {
        cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];
    }
    cell.textLabel.text=self.array[indexPath.row];
    cell.detailTextLabel.text=@"description....";
    
    if ([self.deleteArr containsObject:cell.textLabel.text]) {
        //創建系統提供的每個item右邊的圖標
        cell.accessoryType=UITableViewCellAccessoryCheckmark;
    }else
    {
        cell.accessoryType=UITableViewCellAccessoryNone;
    }
    
    return  cell;
    
}

#pragma mark - UITableViewDelegate
#pragma mark 點擊每個item調用
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    
    if ([self.deleteArr containsObject:self.array[indexPath.row]]) {
        [self.deleteArr removeObject:self.array[indexPath.row]];
        [self.indexPaths removeObject:indexPath];
    }else
    {
        [self.deleteArr addObject:self.array[indexPath.row]];
        [self.indexPaths addObject:indexPath];
    }
    [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
}

#pragma mark 返回每行高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 70;
}





  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved