自訂UITableViewCell風格

  1. 於project中建立一個新file,選擇Cocoa Touch後再選擇Object-C class.
  2. 於Class中輸入自訂的Cell名稱,例如MovieTableViewCell,於Subclass of中輸入UITableViewCell.
  3. 我們需要為自訂的UITableViewCell增加一個UIView,讓我們可以自訂Cell的風格。建立一個新file,選擇User Interface後再選擇View.
  4. 建立View後,xcode為我們預設的並不是正確的UITableViewCell,所以我們手動將預設的View刪除,再於Ojbect Library中拉出Table View Cell。
  5. 現在我們可以自由地在Table View Cell中設計風格,例如加入圖片及文字等等。
  6. 將我們自訂的UITableViewCell加入到UITableViewController
    //設定Section數量
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        return 1;
    }
    //設定Section總行數
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return 5;
    }
    //設定每行的Cell
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *CellIdentifier = @"Cell";
        MovieTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"MovieTableViewCell" owner:nil options:nil];
            cell=[views objectAtIndex:0];
           
            cell.title.text=@"this is title";
            NSURL *imageURL=[NSURL URLWithString:@"http://www.yoursite.com/hello.png"];
            NSData *imageData=[NSData dataWithContentsOfURL:imageURL];
            cell.img.image=[UIImage imageWithData:imageData];
        }
        return cell;
    }
    //為每行的Cell設定高度
    -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        return 77;
    }

  7. 取消預設的UITableViewCell風格,於UITableViewController中的viewDidLoad加入:
    [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
  8. 如果像這個例子,每個Cell都會透過網絡下載不同的圖片顯示,那麼當使用者進行Scroll時,將會出現累格的情況,這時我們只需要在MovieTableViewCell.m中加入以下語法,即可解決這個問題:
    -(NSString *)reuseIdentifier
    {
        return @"Cell";
    }

    原因是以下語法將我們自訂的UITableViewCell與dequeueReusableCellWithIdentifier進行了連結,令app不需要浪費資源每次進行提取。

沒有留言: