我想在完成表演后滚动到UITableView的底部 [self.tableView reloadData]
我原本有
[self.tableView reloadData]
NSIndexPath* indexPath = [NSIndexPath indexPathForRow: ([self.tableView numberOfRowsInSection:([self.tableView numberOfSections]-1)]-1) inSection: ([self.tableView numberOfSections]-1)];
[self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];
Run Code Online (Sandbox Code Playgroud)
但后来我读了reloadData是异步的,所以滚动不因为发生self.tableView,[self.tableView numberOfSections]并且[self.tableView numberOfRowsinSection都是0.
谢谢!
有什么奇怪的是我正在使用:
[self.tableView reloadData];
NSLog(@"Number of Sections %d", [self.tableView numberOfSections]);
NSLog(@"Number of Rows %d", [self.tableView numberOfRowsInSection:([self.tableView numberOfSections]-1)]-1);
Run Code Online (Sandbox Code Playgroud)
在控制台中它返回Sections = 1,Row = -1;
当我完成相同的NSLogs时,cellForRowAtIndexPath我得到Sections = 1和Row = 8; (8是对的)
我如何知道UICollectionView已完全加载?我试图在Swift中重现这个解决方案,但是我在阅读Obj-C时遇到了麻烦.有人可以帮忙吗?
我有一个UICollectionView.每个单元格包含一个UITextField.我希望在显示完成时进行回调,因此我可以查询一个模型对象,textField应该是firstResponder,然后将其作为firstResponder.我能收到回电吗?还是有另一种自然的方法来实现这一目标吗?
我不知道为什么这不起作用.indexOfIcon是正确的,部分是正确的(用NSLog检查)如果我选择一个一切都是正确的.但这条线没有做什么......为什么?如果选中它应该有一个蓝色边框.这在"手动"但不是代码的情况下工作得很好.
- (void)viewWillAppear:(BOOL)animated
{
NSUInteger indexOfIcon;
if(self.mainCategory.icon){
indexOfIcon = [self.icons indexOfObject: self.mainCategory.icon];
} else {
indexOfIcon = 0;
}
[self.collectionView selectItemAtIndexPath:[NSIndexPath indexPathForRow:indexOfIcon inSection:0] animated:YES scrollPosition:UICollectionViewScrollPositionBottom];
}
Run Code Online (Sandbox Code Playgroud)