如何在IOS中从数组中返回正确数量的对象

时间:2012-10-21 15:10:28

标签: ios uitableview nsarray tableview

我试图从myArray返回对象的数量,并根据值,更改tableView中的headerView。应用程序以下列方式运行,用户搜索对象,如果对象存在,则对象将出现在tableView中。如果用户搜索不存在的对象,则tableView中不会显示任何内容。很容易..

尽管用户搜索了一个不存在的对象,但似乎数组以某种方式存储了一个值,而tableView /数组不再是nil了?但是tableView中没有显示任何内容。我究竟做错了什么? searchResults是我的tableView中的数组。

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.searchResults count];
}

 - (UITableViewCell *)tableView:(UITableView *)pTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {
static NSString *CellIdentifier = @"SearchCell";
UITableViewCell *cell = [pTableView dequeueReusableCellWithIdentifier:CellIdentifier];

 if (cell == nil)
 {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
Task *task = [self.searchResults objectAtIndex:indexPath.row];

UILabel *nameLabel = (UILabel *)[cell viewWithTag:1];
UILabel *bookLabel = (UILabel *)[cell viewWithTag:2];
UILabel *chapterLabel = (UILabel *)[cell viewWithTag:3];

[nameLabel setText:task.name];
[bookLabel setText:task.book.name];
[chapterLabel setText:task.chapter.name];


return cell;
}

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *headerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)] autorelease];

if (self.searchResults == nil){

    headerView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"lista2.png"]];

    UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(5, 3, tableView.bounds.size.width - 5, 18)] autorelease];
    label.text = @"Information";
    label.textColor = [UIColor whiteColor];
    label.backgroundColor = [UIColor clearColor];
    [headerView addSubview:label];
  }

  else if (self.searchResults != nil){

    headerView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"lista2.png"]];

    UILabel *label2 = [[[UILabel alloc] initWithFrame:CGRectMake(5, 3, tableView.bounds.size.width - 5, 18)] autorelease];
    label2.text = @"Search results";
    label2.textColor = [UIColor whiteColor];
    label2.backgroundColor = [UIColor clearColor];
    [headerView addSubview:label2];
}
return headerView;

}

1 个答案:

答案 0 :(得分:2)

因此,听起来self.searchResults总是非nil

替换

if (self.searchResults == nil){

if ([self.searchResults count] == 0){

并替换

else if (self.searchResults != nil){

else {