奇怪的Tableview滚动行为

时间:2014-02-14 00:10:17

标签: ios uitableview

我有两个视图,每个视图都包含一个tableview。除高度外,它们在各方面都相同。它们每个都在我的核心数据存储中从同一个实体(当前充满乱码)提供数据。

其中一个在滚动时完美运行,另一个表现不同。问题是单元格滚过顶部标题。成功的部分标题会按预期的方式将旧版本标题提升,标题标题会随着单元格一起向上滑动。

以下是一些截图,我希望能够说明这个问题:

首先,正常工作:

enter image description here

" A"是顶部标题,单元格不会滚过它。

接下来的两个镜头是桌面视图,表现得非常奇怪。我添加了一些箭头来显示正在发生的事情:

enter image description here

enter image description here

我已经比较了属性检查器中的设置,除非我忽略了某些内容,否则它们看起来完全相同。

有人有什么想法吗?

谢谢!

修改

这里是来自关联的UIViewController的代码,它是委托和TableView的数据源:

//
//  AvsAViewController.m
//  WMDGx
//
//  Created by Tim Jones on 2/6/14.
//  Copyright (c) 2014 TDJ. All rights reserved.
//

#import "AvsAViewController.h"

@interface AvsAViewController ()
{
    NSFetchedResultsController *frc;
}

@end

@implementation AvsAViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self)
    {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [self refreshData];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return [[frc sections] count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    id<NSFetchedResultsSectionInfo> sectionInfo = [[frc sections] objectAtIndex:section];
    return [sectionInfo numberOfObjects];
}

// Customize the appearance of table view cells.
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {

    // Configure the cell to show the activity's name
    ListActivity *thisActivity = [frc objectAtIndexPath:indexPath];
    cell.textLabel.text = thisActivity.activityName;
}


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

    [self configureCell:cell atIndexPath:indexPath];

    cell.textLabel.textColor = [UIColor redColor];
    NSAttributedString *attString;
    attString = cell.textLabel.attributedText;
    return cell;
}


//     Section Label

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    NSString *sectionLabel = [[[frc sections] objectAtIndex:section]name];
    return [sectionLabel uppercaseString];
}

-(void) refreshData
{
    //This was the turning point for proper MR grouping. The two Properties (activityCategory and activityName) are used as Sort descriptors in the underlying core data methods

    frc = [ListActivity MR_fetchAllSortedBy:@"activityCategory,activityName"
                                  ascending:YES withPredicate:nil
                                    groupBy:@"activityCategory"
                                   delegate:nil];
    [self.myTableView reloadData];
}


- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

2 个答案:

答案 0 :(得分:0)

确保在Property Inspector中为UITableView选择了“剪辑子视图”,并且代码中某个地方的clipsToBounds表未设置为NO

答案 1 :(得分:0)

我通过简单地删除TableView并拖入一个新的问题解决了这个问题,并将其连接起来。因此问题是固定的,但我不知道是什么导致了这个问题。

感谢评论的@drhr和其他所有看过的人!

修改

只是想知道是否有其他人遇到过这个问题。我只是在另一个tableview上重复它,并且必须如上所述解决它。 FWIW,我正在使用Xcode 5,开发iPhone应用程序。

我觉得固定很好,但实际上知道导致问题的原因会很好。