无法将UITableView滚动到底部

时间:2012-12-23 15:21:24

标签: objective-c ios uitableview ios6 scroll

修改
这就是发生的情况,因此您可以看到:http://youtu.be/v1HrxYhzJZY

这是我的情景:
我有一个UITableView,有5个部分和12个单元格。此视图以push segue打开,一切正常,滚动等等。

其中三个单元格打开MKMapView视图(通过push segue),另一个单元格弹出MFMailComposeViewController

当我尝试返回到我的UITableView时,我无法再滚动到底部。我只能滚动一点,然后它返回到我的tableview的顶部。

我尝试在viewWillAppear上设置框架尺寸,我尝试重新加载tableView,但它不起作用!
什么可能导致这个问题?

修改
我的实施是:

- (void)viewDidLoad {
    loaded = NO;

    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"my_url", self.userID]];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
        loaded = YES;

        self.user = JSON;
        [self setUserValues];

        [self.tableView reloadData];

    } failure:nil];

    [operation start];

    [super viewDidLoad];
}

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    [self.tableView setContentSize:CGSizeMake(320, 420)];
}

6 个答案:

答案 0 :(得分:7)

我自己用这个简单的代码解决了这个问题:

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    [self.tableView reloadData];
}

非常感谢!

答案 1 :(得分:5)

滚动表格视图的viewWillAppear:方法为时尚早。视图尚未添加到屏幕视图层次结构中并已布局。尝试在viewDidLayoutSubviews中完成。

答案 2 :(得分:1)

使用以下代码将tableView滚动到所需的部分/行:

[tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:desiredRow inSection:desiredSection] atScrollPosition:UITableViewScrollPositionTop animated:NO];

答案 3 :(得分:1)

要滚动继承自UIScrollView的tableView,您需要使用[self.tableView setContentOffset:CGPointMake(0,100) animated:YES];而不是setContentSize

答案 4 :(得分:1)

我也经历过这一点。从子视图返回,表视图不再可滚动(它总是会反弹到顶部)。我的孩子视图没有像你这样的地图视图。

重新加载表格视图并没有为我解决。

该错误仅在iOS 7中显示,而不是6.1。

我正在访问topLayoutGuide ...删除该访问权限(只是属性读取!)修复了该问题。 WTF!必须是一个神奇的财产。

答案 5 :(得分:0)

昨天我也遇到了这个问题!我刚刚修好了它!

我将UITableView拖到UIViewController,只需选择add missing contraints。当我运行应用程序时,UITableView无法滚动到底部。

我用Google搜索并看到a similar question in Stackoverflow

然后我检查了UITableView的约束,我发现有一个禁令设置了UITableView的固定高度。然后我删除了约束并添加了另一个:Bottom Space to: Bottom Layout Guide = 0

解决方案对我有用。