2012-02-15 84 views
9

我想用一個動態部分定義靜態表格視圖 這可能嗎?在靜態表格視圖中包含「靜態單元格」的「動態原型」部分

第0節應該是靜態的,這些標籤用xcode連接到插座。

第1節應是動態的

我嘗試這樣做,但我不知道我可以爲靜態部分返回什麼細胞。

static NSString *CellIdentifier = @"ItemCellBasic"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

switch (indexPath.section) 
{ case 0: 
    return // I don´t know what 

    case 1: 
    cell.textLabel [email protected]"dynamic"; 
    return cell;  
} 

編輯1; 現在我想:

case 0: return [super tableView:tableView cellForRowAtIndexPath:indexPath]; 

但得到:

*** Assertion failure in -[UITableView _createPreparedCellForGlobalRow:withIndexPath:], /SourceCache/UIKit_Sim/UIKit-1912.3/UITableView.m:6072 
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:' 
+0

屬性:xcode中的「content」,可以是「靜態單元」或「動態原型」。 – mica 2012-02-15 21:29:42

回答

5

我對這個問題

在表視圖數據源的方法的局部解決方案,我返回超類導致的靜態細胞,對於動態單元格,我返回所需的動態值。

在 - (UITableViewCell的*)的tableView:(UITableView的*)的tableView的cellForRowAtIndexPath:(NSIndexPath *)indexPath的dequeueReusableCellWithIdentifier:返回nil,所以我創建一個新的UITableViewCell

剩下的問題:

在Xcode你必須指定「動態部分」中的行數(當然不是動態的)。你不能顯示超過你在這裏定義的最大值(或者得到一個異常;-))。

Samplecode:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    switch (section) 
    { case STATIC_SECTION: 
     return [super tableView:tableView numberOfRowsInSection:section]; 

    case DYNAMIC_SECTION 
     return NUMBER_OF_DYNAMIC_ROWS; 
    } 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"ItemCellBasic"; 
    UITableViewCell *cell; 

    switch (indexPath.section) 
    { 
    case STATIC_SECTION: 
     return [super tableView:tableView cellForRowAtIndexPath:indexPath]; 

    case DYNAMIC_SECTION: 
     cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
     if (!cell) 
     { cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] ; 
     } 

     cell.textLabel.text=DYNAMIC_TEXT; 
     return cell;  
    } 

} 
+0

其實你可以添加任意數量的動態單元格。參見[link](http://stackoverflow.com/questions/10043521/adding-unknown-number-of-rows-to-static-cells-uitableview/10060997#comment15940351_10060997) – DanSkeel 2012-10-03 21:36:23

-1

,而不是一個開關嘗試使用一些好老if語句

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
     if(section==STATIC_SECTION){ 
      return *the number of rows in the static section* 
     } 
     else{ 
      return NUMBER_OF_DYNAMIC_ROWS; 
     } 
    } 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    static NSString *CellIdentifier = @"ItemCellBasic"; 
    UITableViewCell *yourCell = [tableView dequeReusableCellWithIdentifier:CellIdentifier forIndexpath:indexPath]; 

    yourCell.text = *your dynamic text or something* 

    return yourCell; 
} 

現在假設你的靜態細胞沒有重用標識符,因爲那也只是多餘的,並且由於您只需要一個原型單元以供重用,因此應該是您的設置

相關問題