2013-11-04 108 views
6

工作,我有我的storyboard.It一個問題是工作正常,但是當我試圖改變的UITableView的內容屬性就引起以下錯誤UITableView的內容「靜態細胞」不iOS7

斷言失敗 - [UITableView的dequeueReusableCellWithIdentifier:forIndexPath:],/SourceCache/UIKit/UIKit-2903.23/UITableView.m 由於未捕獲的異常'NSInternalInconsistencyException',原因:'無法使標識符Cell出院 - 必須註冊一個nib或類標識符或連接故事板中的原型單元格'

我想設計一個靜態單元格的分組表格。提前感謝

代碼

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
// Return the number of sections. 
return 2; 
} 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
return 3; 
} 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"Cell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 
return cell; 
} 
+0

添加該代碼,如果你不同意你的代碼,我們將無法幫助你 –

+0

- ( NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { //返回段數。 return 2; (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 3;(NSInteger) } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {0} {0}靜態NSString * CellIdentifier = @「Cell」; UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; return cell; } –

+0

@AdnanChaudhry:將代碼添加到問題中,您可以編輯問題並添加代碼,如此..請參閱問題 –

回答

0

當使用故事板的tableview細胞必須在storyboard.That註冊意味着細胞必須被添加到該表及其標識符必須是set.This標識符應當在代碼中使用cellForRowAtIndexpath

EDIT

在靜態細胞需要筆尖被創建並經由代碼或筆尖

填充內容的每個purticular細胞的情況下

閱讀本

+0

我已將桌面視圖單元註冊到故事板並設置標識符。 –

+0

和小區標識符是「小區」? –

+0

當我運行帶有動態原型的tableview屬性內容的項目時,它工作正常。但是當我將此屬性更改爲靜態單元格時,則顯示錯誤。 –

1

我也遇到過同樣的問題,我想我找到工作了這一點的方式。

  1. 創建控制器從UITableViewController擴展到包裝其控制器,它將具有默認的UITableViewDelegate和UITableViewDataSource方法。
  2. 刪除的UITableView委託和數據源
  3. 從控制器文件刪除默認的UITableViewDelegate和UITableViewDataSource方法,怎麼把它的靜態細胞,所以這種情況是否存在,不會出現

希望它能幫助。

0

您不允許在普通UITableView中使用靜態單元格。

相反,您需要使用UITableViewController去與靜態單元格。

thisthis可能或可能有所幫助。

7

如果使用靜態單元格,只需註釋所有的UITableViewDatasourceDelegate方法。所以評論下面的代碼:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
// Return the number of sections. 
return 2; 
} 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
return 3; 
} 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"Cell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 
return cell; 
} 

希望這會幫助你!

+1

對不起,我的回答是不正確的!你應該閱讀[This related answer](http://stackoverflow.com/a/9434849/2544997),這表明你可以實現UITableViewDatasourceDelegate,但不喜歡你的方式。就像這樣:' - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [super tableView:tableView numberOfRowsInSection:section]; } - (的UITableViewCell *)的tableView:(UITableView的*)的tableView的cellForRowAtIndexPath:(NSIndexPath *)indexPath { 返回[超級的tableView:的tableView的cellForRowAtIndexPath:indexPath]; } ' – pingguoilove

0
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [YourArr count]; 
} 
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return 44; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSString *CellIdentifier = [NSString stringWithFormat:@"cell %d",indexPath.row]; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    cell = nil; 
    if (cell == nil) 
    { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    } 
    return cell; 
} 
4

代替使用:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

// - >這是通過使用原型細胞(例如)動態的TableView

使用時使用:

UITableViewCell *cell = [super tableView:tableView 
        cellForRowAtIndexPath:indexPath]; 

// - >由於您選擇了Static TableCells你並不需要,而不是重用使用在筆尖創建的細胞

+0

很好的答案amigo! –

0

cellForRowAtIndexPath

​​