搜索栏导致应用程序在我的ios库中崩溃

时间:2016-02-19 16:31:17

标签: ios objective-c iphone uitableview dylib

我正在研究一个外部动态可可库(dylib),它在某些时候提供了一个带有tableview和搜索栏的视图。 我在创建

上有这个
- (void)viewDidLoad {
    [super viewDidLoad];
    NSBundle *frameworkBundle = [NSBundle bundleForClass:[self class]];
    UINib *nib = [UINib nibWithNibName:CONTACT_CELL bundle:frameworkBundle];
    [[self tableView] registerNib:nib forCellReuseIdentifier:CONTACT_CELL];
    [self readContacts];
}

和我的桌子代表

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

    ContactCell *cell = [tableView dequeueReusableCellWithIdentifier:CONTACT_CELL];
    if (cell == nil)
    {
        NSLog(@"Cell was empty!");
    }

    Contact *c = [contacts objectAtIndex:[indexPath row]];

    [[cell labelName] setText: [c getName]];
    [[cell labelPhone] setText: [c getPhone]];

    return cell;
} 

问题是,当我点击搜索栏时,应用程序崩溃是因为:

  

*断言失败 - [UISearchResultsTableView   _configureCellForDisplay:forIndexPath:],/ BuildRoot / Library / Cache / com.apple.xbs / Sources / UIKit_Sim / UIKit-3512.30.14 / UITableView.m:7962   2016-02-19 17:07:00.404 HostApp [2233:20181] * 由于终止应用程序   未被捕获的异常' NSInternalInconsistencyException',原因:   ' UITableView(; layer =; contentOffset:{0,0}; contentSize:{414,528}>)   无法从其dataSource()'

获取单元格

如果我使用

[tableView dequeueReusableCellWithIdentifier:CONTACT_CELL forIndexPath: indexPath];
  

*断言失败 - [UISearchResultsTableView dequeueReusableCellWithIdentifier:forIndexPath:],   /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3512.30.14/UITableView.m:6564   2016-02-19 17:37:08.254 HostApp [2691:28849] * 终止应用程序   未被捕获的异常' NSInternalInconsistencyException',原因:'无法   使用标识符ContactCell将单元格出列 - 必须注册一个笔尖或   标识符的类或连接原型单元格   故事板'

4 个答案:

答案 0 :(得分:0)

您无法在frame中返回bounds

您可以使用:

nil

总是返回一个单元格,或者手动分配它:

cellForRowAtIndexPath

答案 1 :(得分:0)

检查 1.搜索栏代表你返回的内容 - (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {} 2.检查部分tableview删除中的行数

答案 2 :(得分:0)

试试这个

ItemCell是我的nibName而不是标识符

- (void)viewDidLoad
    {
     [super viewDidLoad];
     UINib *nib = [UINib nibWithNibName:@"ItemCell" bundle:nil];
     [[self tableView] registerNib:nib forCellReuseIdentifier:@"ItemCell"];
    }

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
           // Create an instance of ItemCell
   PointsItemCell *cell =  [tableView dequeueReusableCellWithIdentifier:@"ItemCell"];

        return cell;
}

答案 3 :(得分:0)

问题是我为“普通”tableView注册了nib,但没有为searchdisplaycontroller的tableView注册。

使用此viewDidLoad将解决问题。

$query = $this->db->query('SELECT * FROM seminarattendee');
$number_of_attendee=$query->num_rows();