修改
这就是发生的情况,因此您可以看到: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)];
}
答案 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
。
解决方案对我有用。