2012-02-13 43 views
0

我想將我的表格視圖分解爲多個部分。我希望看到一個將表格視圖分成3個部分的例子,然後我可以選擇部分開始的索引。爲iphone應用程序(xcode 4.2)打破自定義部分的表格

因此,如果我有一個對象數組,並且它們填充一個表視圖。我想選擇部分的標題和部分開始的位置(所以1-13行將是第1部分,13-30將是第2部分等)。

我有這個至今:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 

    if (ingredientListChoice == 1) { 
     return 3; 

    } 

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{ 
    if (ingredientListChoice == 1) { 
    return @"Section Title"; 
    } 
} 

請讓我知道如果你能告訴我什麼,我在得到的一個例子。謝謝。

回答

1

這是一個粗略的方法來做到這一點。基本上,您需要從tableView:numberOfRowsInSection:中返回每個部分的正確大小,然後通過在tableView:cellForRowAtIndexPath:中從數據陣列中提取內容時向行索引位置添加一個偏移量,在表格單元格中設置正確的內容。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 3; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    switch (section) { 
     case 0: return 13; break; 
     case 1: return 17; break; 

     etc... 
    } 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath 
{ 
    cell = [tableView dequeueReusableCellWithIdentifier:@"MyCell"]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    int offset = 0; 
    switch (section) { 
     case 0: offset=0; break; 
     case 1: offset=13; break; 
     case 2: offset=30; break; 

     etc... 
    } 

    int arrayRow = indexPath.row + offset; 
    cell.textLabel.text = [myArray objectAtIndex:arrayRow]; 

    return cell; 
} 

一個更清潔的方式可能是你的截面的大小存儲爲一個屬性您存儲陣列(你會在viewDidLoad也許設定),然後numberOfRowsInSection和的cellForRowAtIndexPath可以讀取所需的值(一個或多個)該數組,所以如果將來您需要更改部分的大小,您只需更新一個地方。

相關問題