Ios 奇怪的Tableview滚动行为

Ios 奇怪的Tableview滚动行为,ios,uitableview,Ios,Uitableview,我有两个视图,每个视图都包含一个tableview。除了高度外,他们在各个方面都是一样的。它们都是从我的核心数据存储中的同一个实体(当前充满了胡言乱语)提供的数据 其中一个在滚动时工作正常,另一个则表现不同。问题是单元格会滚动过顶部的部分标题。后续的部分标题会像预期的那样将旧的部分向上突出,标题标题会随着单元格一起向上滑动 以下是我希望能够说明问题的几个屏幕截图: 首先,正常工作的一个: “A”是顶部的部分标题,单元格不会滚动过去 接下来的两张照片是行为怪异的tableview。我添加了一些箭

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

其中一个在滚动时工作正常,另一个则表现不同。问题是单元格会滚动过顶部的部分标题。后续的部分标题会像预期的那样将旧的部分向上突出,标题标题会随着单元格一起向上滑动

以下是我希望能够说明问题的几个屏幕截图:

首先,正常工作的一个:

“A”是顶部的部分标题,单元格不会滚动过去

接下来的两张照片是行为怪异的tableview。我添加了一些箭头来显示发生了什么:

我比较了属性检查器中的设置,除非我忽略了什么,否则它们看起来是相同的

有人有什么想法吗

谢谢

编辑:

以下是关联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
//
//AvsAViewController.m
//WMDGx
//
//由Tim Jones于2014年2月6日创作。
//版权所有(c)2014 TDJ。版权所有。
//
#导入“AvsAViewController.h”
@接口AvsAViewController()
{
NSFetchedResultsController*frc;
}
@结束
@AvsAViewController的实现
-(id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil
{
self=[super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
如果(自我)
{
//自定义初始化
}
回归自我;
}
-(无效)viewDidLoad
{
[超级视图下载];
//加载视图后执行任何其他设置。
[自我刷新数据];
}
-(NSInteger)表格视图中的节数:(UITableView*)表格视图
{
返回[[frc区段]计数];
}
-(NSInteger)表视图:(UITableView*)表视图行数节:(NSInteger)节
{
id sectionInfo=[[frc sections]objectAtIndex:section];
返回[sectionInfo numberOfObjects];
}
//自定义表格视图单元格的外观。
-(void)configureCell:(UITableViewCell*)单元格atIndexPath:(NSIndexPath*)indexPath{
//配置单元格以显示活动的名称
ListActivity*thisActivity=[frc objectAtIndexPath:indexPath];
cell.textLabel.text=此Activity.activityName;
}
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
静态NSString*CellIdentifier=@“aVSaCell”;
UITableViewCell*单元格=[tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
[self-configureCell:cell-atIndexPath:indexPath];
cell.textLabel.textColor=[UIColor redColor];
NSAttributedString*attString;
attString=cell.textlab.attributedText;
返回单元;
}
//剖面标签
-(NSString*)表格视图:(UITableView*)表格视图标题标题标题部分:(NSInteger)部分
{
NSString*sectionLabel=[[[frc sections]对象索引:节]名称];
返回[sectionLabel uppercaseString];
}
-(无效)刷新数据
{
//这是正确MR分组的转折点。两个属性(activityCategory和activityName)在底层核心数据方法中用作排序描述符
frc=[ListActivity MR_fetchAllSortedBy:@“activityCategory,activityName”
升序:YES,带谓词:nil
groupBy:@“活动类别”
代表:无];
[self.myTableView重新加载数据];
}
-(无效)未收到记忆警告
{
[超级记忆警告];
//处置所有可以重新创建的资源。
}
@结束

确保为属性检查器中的
UITableView
选择了“Clip subview”,并且表的
clipstobunds
未在代码中的某个位置设置为
NO

我通过简单地删除TableView并拖动一个新的TableView,将其连接起来,解决了这个问题。因此,问题已经解决,但我不知道是什么原因造成的

感谢@drhr,他发表了评论,以及所有其他人的关注

编辑:

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


我想修复是好的,但如果能真正知道是什么导致了问题,那就太好了。

刚刚检查过。“剪辑”子视图处于选中状态。我从未听说过clipsToBounds,在项目中也找不到提及它的地方。嗯,这是我复制它的唯一方法。您是否可以在您的帖子中添加任何与表格相关或影响表格的代码?(特别是
UITableViewDelegate
,我想也是
UITableViewDataSource
)。Identity Inspector的“用户定义的运行时属性”有什么不同吗?除此之外,我想知道ListActivity是否在
-init:
方法(或其他init变体之一)中做了一些奇怪的事情,但这应该会导致它在两个表中都发生。。听起来它一定是IB中的某个地方,我只是不可能是其他地方。我应该更有耐心,但正如你在下面看到的,我删除并替换了有问题的tableview。然而,我无法想象怎么会有任何用户定义的运行时属性,因为我知道我没有在那里添加任何东西。我同意商店里的任何古怪行为都应该出现在两张桌子上。在任何情况下,实体或属性似乎都不会对tableview中的参数产生任何影响。再次感谢!