0

我正在使用自定義單元格的tableview的故事板。我在故事板中創建了自定義單元格,但沒有任何其他類。當我不使用UISearch欄時,一切正常,但是當我想爲UISearchBarController tableview創建自定義單元格時,我不知道該如何去做。 她的是在故事板我的自定義單元格,如何在故事板中使用UISearchBar時填充自定義單元格

custom cell

與cellIdentifier = 「SelectionCell」

cell identifier

,我沒有使用任何自定義類。

custom class

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"SelectionCell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    NSArray *nibs = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil]; 
    cell = [nibs objectAtIndex:0]; 
} 

代碼崩潰: 「捆綁無法加載NIB:」

我沒有爲我的自定義單元格一個NIB文件,我沒有任何自定義的UITableViewCell類使用分配/ init方法是這樣的:

cell = [[myCustomCellClass alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 

我怎麼可以創建細胞?

回答

0

看起來它沒有一個自定義單元類是不可能完成的。因爲我們沒有故事板原型單元格來爲過濾的表格視圖操作圖形,所以我們必須以編程方式創建單元格。爲此,我們需要一個自定義單元類和.m文件中的initWithStyle:方法,如下所示。 所以我創建了一個名爲的UITableViewCell的SelectionCell子類,並在IB分配的自定義單元格類SelectionCell類並創建IBOutlet中所有UI控件在我的自定義單元格成SelectionCell.h文件

@interface SelectionCell : UITableViewCell{ 

} 
@property (strong, nonatomic) IBOutlet UIImageView *contactPictureID; 
@property (strong, nonatomic) IBOutlet UILabel *contactName; 
@property (strong, nonatomic) IBOutlet UILabel *emailAddress; 
@property (strong, nonatomic) IBOutlet UIImageView *selectedEmailState; 

@end 
在initWithStyle

:方法,我不得不重新編程所有的UI控件,並將它們添加到內容查看爲子視圖:

// SelectionCell.m 
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
{ 
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
    if (self) { 
     // Initialization code 
     self.selectionStyle = UITableViewCellSelectionStyleNone; 

     _contactPictureID = [[UIImageView alloc] initWithFrame:(CGRectMake(10, 14, 48, 48))]; 

     _contactName = [[UILabel alloc] initWithFrame:(CGRectMake(66, 14, 201, 30))]; 
     _contactName.font = [UIFont boldSystemFontOfSize:20]; 
     _contactName.textAlignment = NSTextAlignmentLeft; 

     _emailAddress = [[UILabel alloc] initWithFrame:(CGRectMake(66, 41, 201, 21))]; 
     _emailAddress.font = [UIFont systemFontOfSize:16]; 
     _emailAddress.textAlignment = NSTextAlignmentLeft; 

     _selectedEmailState = [[UIImageView alloc] initWithFrame:(CGRectMake(275, 22, 32, 32))]; 

     [self.contentView addSubview:_contactPictureID]; 
     [self.contentView addSubview:_contactName]; 
     [self.contentView addSubview:_emailAddress]; 
     [self.contentView addSubview:_selectedEmailState]; 
    } 
    return self; 
} 

現在我能夠實例我的自定義單元格。在cellForRowAtIndexPath方法中

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

if (cell == nil) { 
    cell = [[SelectionCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } 

現在一切正常,因爲它應該是。

0

searchResultsTableView
顯示搜索結果的表視圖。 (只讀)

@property(nonatomic, readonly) UITableView *searchResultsTableView 

一個搜索顯示控制器管理搜索欄的顯示,以顯示搜索結果表視圖(你原來的tableview風格)一起。

+0

我知道,問題是當tableView == searchResultTableView,我必須創建一個自定義單元格來填充searchResultTableView單元格,但我沒有自定義類的UITableViewCell。 – Hadu

相關問題