Dodałem UITableView jako subview do niestandardowej klasy UIView, nad którą pracuję. Zauważyłem jednak, że za każdym razem, gdy przewijam stół, wywołuje on mój layout layoutSubviews. Jestem prawie pewien, że jest to widok UIScroll, który dziedziczy po stole, który faktycznie to robi, ale chciał wiedzieć, czy istnieje sposób wyłączenia tej funkcji, a jeśli nie, dlaczego tak się dzieje? Nie rozumiem, dlaczego podczas przewijania przewijania potrzebuje on swojego superwizja do układu swoich podobrazów.UIScrollview wywoływanie układu superviewsOdblanie podczas przewijania?
Kod:
@implementation CustomView
- (id)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
self.clipsToBounds = YES;
UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0.0, 15.0, 436.0, 132.0) style:UITableViewStylePlain];
tableView.dataSource = self;
tableView.delegate = self;
tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
tableView.backgroundColor = [UIColor clearColor];
tableView.showsVerticalScrollIndicator = NO;
tableView.contentInset = UIEdgeInsetsMake(kRowHeight, 0.0, kRowHeight, 0.0);
tableView.tag = componentIndex;
[self addSubview:tableView];
[tableView release];
}
return self;
}
- (void)layoutSubviews {
// This is called everytime I scroll the tableview
}
@end
Ale powiedz mi, dlaczego to zrobiłeś tak Czemu dodanie widok tabeli do widoku niestandardowego? – Manjunath
Długa historia, tworzę niestandardowy PickerView, który pozwala na wielokrotny wybór i ma inny rozmiar niż standardowy. Zasadniczo wyświetla tło PickerView przekształcone z przezroczystą tabelą na górze – marchinram
Czy spojrzałeś na to? Facet wydaje się mieć przeciwny problem, w tym layoucie nie jest wywoływany. Wspomniał także o poprawce, która, jeśli ją odwrócisz, może ci się przydać. :) http://stackoverflow.com/questions/728372/when-is-layoutsubviews-called – Kalle