Có cách tự động nào để nhận biết các thay đổi của ContentSize trong UITableView/UIScrollView không?UITableView/UIScrollXem cách tự động biết khi ContentSize thay đổi?
Trả lời
Câu trả lời thực sự đơn giản khi sử dụng KVO (Quan sát giá trị khóa);
- (id)initWithFrame:(CGRect)frame tableView:(UITableView *)tableView
{
// ....
[self.tableView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld | NSKeyValueObservingOptionPrior context:NULL];
// ....
}
- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([keyPath isEqualToString:@"contentSize"])
{
// Do something
}
}
Tôi chưa chắc chắn về cờ.
Tôi biết điều này đã được một thời gian trước nhưng cảm ơn bạn rất nhiều! – ryanwils
Cũng nhớ đến '-removeObserver: forKeyPath: context:' – titaniumdecoy
Tôi thường đặt '-removeObserver: forKeyPath: context:' trong phương thức '-dealloc'. –
Đối với những người không thích KVO:
- (void)setContentSize:(CGSize)contentSize {
[super setContentSize:contentSize];
// Do something.
}
Yeah, chỉ cần sử dụng super
để truy cập phương pháp cha mẹ. Điều này giả sử bạn phân lớp UIScrollview/TableView/CollectionView
* những gì * cần phải biết về thay đổi kích thước nội dung? Các "UITableView'" & "' UIScrollView' "đối tượng mình, hoặc cái gì đó có chứa chúng, hoặc cái gì khác hoàn toàn? –