UITableView在IOS 7和IOS 6中的表现不同

时间:2013-12-05 08:51:05

标签: ios objective-c uitableview ios6 ios7

我的UITtableView在IOS 7上表现得很奇怪,它在IOS 6上工作正常。当使用搜索栏过滤单元格时,它看起来好像有一个单元格叠加在一起。我不知道如何用文字表达,但这里是图像

在IOS 7上

Image iOS 7

在IOS 6上

image iOS 6 这是代码

#pragma mark - Table view data source

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (tableView == self.tableView)
{
    return [self.airportArray count];
}
else
    return [filterArray count];
}

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

      UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
      if (cell == nil)
      {
          cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
          cell.backgroundColor=[UIColor whiteColor];
      }

       NSMutableDictionary *cDict;

      if (tableView == self.tableView)
      {
         cDict = [self.airportArray objectAtIndex:indexPath.row];
      }
      else 
      {
         cDict = [filterArray objectAtIndex:indexPath.row];
      }

     cell.textLabel.text = [cDict objectForKey:@"code4"];

     return cell;
}


#pragma mark - Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSMutableDictionary *cDict;

    if (tableView == self.tableView) {
        cDict = [self.airportArray objectAtIndex:indexPath.row];
    }
    else {
        cDict = [filterArray objectAtIndex:indexPath.row];
    }

    if (_currentTextField == _viewController.diversion1TextField) {
        [_viewController setChooseAirport1:cDict];
    }
    else if (_currentTextField == _viewController.diversion2TextField)
    {
        [_viewController setChooseAirport2:cDict];
    }
}

2 个答案:

答案 0 :(得分:2)

我讨厌链接到一个网站作为答案,但这是iOS 7.0上popover UISearchDisplayerControllers中的一个错误。

Peter Steinberger在这里记录得非常好:Fixing UISearchDisplayController on iOS 7

答案 1 :(得分:0)

你只需删除 [tableView dequeueReusableCellWithIdentifier:CellIdentifier]的评论;

所以你的代码看起来像

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
      ....
      UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
      ....
}

并且仍然无效,请查看http://sdrv.ms/IRaf5a

中的代码