рд╕рдкрдирд╛
UICollectionView, iOS 6 рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ UIKit рдХреНрд▓рд╛рд╕ рд╣реИред рд╕рдЦреНрддреА рд╕реЗ рдмреЛрд▓рдиреЗ рдкрд░, рдпрд╣ рдПрдХ рдРрд╕рд╛ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рдВрдЧреНрд░рд╣ рдХреА рд╕рдВрд░рдЪрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдордирдорд╛рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдорддреМрд░ рдкрд░ UICollectionView рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реЗрд▓, рд╣реЗрдбрд░ рдФрд░ рдлреБрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЧреНрд░рд┐рдб рдЬреИрд╕реЗ рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рд╡рд░реНрдЧ рдХрд┐рддрдирд╛ рд╕рд╛рд░ рд╣реИ, Apple рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдХрд┐рд╕реА рднреА рд▓реЗрдЖрдЙрдЯ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рддрдВрддреНрд░ рдмрдирд╛рдпрд╛ рд╣реИред рджреНрд╡рд╛рд░рд╛ рдФрд░ рдмрдбрд╝реЗ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ UITableView UICollectionView рдХрд╛ рдПрдХ рдареЛрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдЗрд╕ рд╡рд░реНрдЧ рдХреА рдХреНрд╖рдорддрд╛рдПрдВ рдПрдХ рдорд╛рдпрдиреЗ рдореЗрдВ рд╢рд╛рдирджрд╛рд░ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рд▓реЗрдЦ рдЙрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред
Apple рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдЕрдХрд┐рд▓реАрдЬрд╝ рд╣реАрд▓ KFOR рдмрдирд╛рдиреЗ рдХреА рдирд┐рд░рдВрддрд░ рдЗрдЪреНрдЫрд╛ рд╣реИ, рдЬреЛ "рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ" рдХрд╛рдо рдХрд░реЗрдЧреАред рдмрд╕ рдпрд╣ рдХрд░реЛ рдФрд░ рд╡рд╣ рдФрд░ рд╡рд░реНрдЧ рд╕рд╣реА рдмрд╛рдд рд╣реЛрдЧреАред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рд╣рдореЗрд╢рд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдФрд░ UICollectionView рдПрдХ рдкреНрд░рдореБрдЦ рдЙрджрд╛рд╣рд░рдг рд╣реИред IOS 6 рдореЗрдВ рд░рд┐рд▓реАрдЬ рд╕реЗ рд▓реЗрдХрд░ рд╡рд░реНрддрдорд╛рди рджрд┐рди (iOS 7.0.4) рддрдХ, рдХреНрд▓рд╛рд╕ рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрдЧреНрд╕ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдирд╕реЗ рдирд┐рдкрдЯрдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдФрд░ рдЕрдкреНрд░рд┐рдп рд╣реЛрддрд╛ рд╣реИред рд╣рдореЗрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ "рд╣реБрдб рдХреЗ рдиреАрдЪреЗ" рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ UICollectionView рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╣рд╛рд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЦрд░реАрджреА рдЧрдИ рдмреИрд╕рд╛рдЦреА рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕реЗ рдЕрдиреБрдкрд╛рддреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдИ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЬреНрдЮрд╛рдд рдХреАрдбрд╝реЗ рдФрд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рд╣реИред
рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ - рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛
рдмрдЧреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдПрдХ "рд╕рд╣реА рдкрд░рд┐рджреГрд╢реНрдп" рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ UICollectionView рдмрд┐рдирд╛ рдХрд┐рд╕реА рдмреИрд╕рд╛рдЦреА рдХреЗ, рд╕реНрдерд┐рд░ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдпрд╣ рдПрдХ UICollectionView рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рд╣реЗрдбрд░ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдкрд╛рдж, рдХреЗрд╡рд▓ рдХреЛрд╢рд┐рдХрд╛рдПрдВ рд╣реИрдВред рдЬрдм рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (viewDidLoad :), UICollectionView -reloadData рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдирд┐рдореЗрдЯреЗрдб рд╡рд┐рд▓реЛрдкрди, рдЪрд╛рд▓ рдФрд░ рдЖрд╡реЗрд╖рдг рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдмреИрд╕рд╛рдЦреА рдХреЗ рдмрд┐рдирд╛ UICollectionView рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдПрдХ рдЖрджрд░реНрд╢ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдХрд╛рдлреА рд╕реАрдорд┐рдд рд╣реИред
рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реЗрдВ рдХрд┐ рдЖрдк рд╕реВрдЪреА рд╕реЗ рдмрдЧ рдХрд╛ рд╕рд╛рдордирд╛ рди рдХрд░реЗрдВ, рдЬреЛ рдореИрдВ рдиреАрдЪреЗ рджреВрдВрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдмрдЧ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдерд╛, рдЬреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░реЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА рдорджрдж рдХреА, рдЗрд╕ рдмрд╛рдд рдХреА рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛, рдФрд░ рдпрд╣ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЖрдИрдУрдПрд╕ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ред рдмреИрд╕рд╛рдЦреА рдХреЗ рдХрдИ рдмрджрд╕реВрд░рдд рджрд┐рдЦреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдХреМрди рд╕рд╛ рдмреИрд╕рд╛рдЦреА рдмрджрд╕реВрд░рдд рдирд╣реАрдВ рд╣реИ? рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдХреБрдЫ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА =)ред рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВ!
iOS 6 + iOS 7
1. рдЖрдк рдкрд╣рд▓реЗ UICollectionViewCell рдХреЛ рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдЕрдВрддрд┐рдо рд╢реЗрд╖ UICollectionViewCell рдХреЛ рд╣рдЯрд╛ рдирд╣реАрдВ рд╕рдХрддреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдбрд┐рдмрдЧ рдмрд┐рд▓реНрдб рдореЗрдВ рдХреНрд░реИрд╢ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд░рд┐рд▓реАрдЬрд╝ рдмрд┐рд▓реНрдб рдореЗрдВ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░:
*** рдЕрдирдХреИрдкреНрдб рдЕрдкрд╡рд╛рдж 'NSInternalInconsistencyException' рдЕрдкрд╡рд╛рдж рдХреЗ рдХрд╛рд░рдг рд╕рдорд╛рдкреНрддрд┐ рдРрдк, рдХрд╛рд░рдг: 'рд╡реИрд╢реНрд╡рд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХ 1 рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХрд╛рдВрдХ рдкрде рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдЬрдм рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдореЗрдВ рдХреЗрд╡рд▓ 1 рдЖрдЗрдЯрдо рд╣реИрдВ'
рдЯрд┐рдкреНрдкрдгреАред UICollectionView рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рдмрдЧред Apple рдмрдЧ рдЯреНрд░реИрдХрд░ рдкрд░ рдЦреБрд▓рд╛
рд░рд╛рдбрд╛рд░ ред рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рд╕реНрдерд┐рд░ рд╕рдорд╛рдзрд╛рди рд░реАрд▓реЛрдбреЗрдбрд╛ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИред рдХрднреА-рдХрднреА рдпрд╣ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред ItAAAIIndexPaths: рд╡рд┐рдзрд┐ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдмреНрд▓реЙрдХ рдореЗрдВ (рд╣рд╛рдБ, рдкреИрд░ рдмреЗрд░рд╣рдореА рд╕реЗ рдЧреЛрд▓реА рдорд╛рд░ рджреА рдЧрдИ рдереА)ред
@try { [self.collectionView insertItemsAtIndexPaths:indexPaths]; } @catch (NSException *exception) {}
рдПрдХ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди, рдЬреЛ рд╢рд╛рдпрдж рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдкреНрд░рджрд░реНрд╢рдирдмреЙрдЯрдЕрдкрдбреЗрдЯреНрд╕ рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рдкреБрдирдГ рд▓реЛрдбрдбреИрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИред
[self.collectionView performBatchUpdates:^{ [self.collectionView reloadData]; } completion:nil];
2. рдПрдХ рд╕рд╛рде рджреЛ рдПрдиреАрдореЗрд╢рди рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмреНрд▓реЙрдХрдЪреИрдбреЗрдЯреНрд╕ рдмреНрд▓реЙрдХ рдХреЗ рдХрд╛рд░рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
*** рдЕрдирдХрд╣рд╛ рдЕрдкрд╡рд╛рдж 'NSInternalInconsistencyException' рдЕрдкрд╡рд╛рдж рдХреЗ рдХрд╛рд░рдг рд╕рдорд╛рдкреНрддрд┐ рдРрдк, рдХрд╛рд░рдг: 'рдЕрдорд╛рдиреНрдп рдЕрджреНрдпрддрди: рдЕрдорд╛рдиреНрдп рд╕рдВрдЦреНрдпрд╛ рдЕрдиреБрднрд╛рдЧред рдЕрджреНрдпрддрди рдХреЗ рдмрд╛рдж рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (1) рдЕрджреНрдпрддрди (0) рд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдпрд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд┐рдП рдЧрдП рдпрд╛ рд╣рдЯрд╛рдП рдЧрдП рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╢реВрдиреНрдп (0 рд╕рдореНрдорд┐рд▓рд┐рдд, 0) рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ред ')
рдЯрд┐рдкреНрдкрдгреАред рдпрд╣ рдЕрдиреБрдЪреНрдЫреЗрдж рдорд╣рддреНрд╡рд╣реАрди рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред UICollectionView рдХреЗ рд╕рд╛рде рдореЗрд░реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ 80% рддрдм рдЙрддреНрдкрдиреНрди рд╣реБрдЖ рдЬрдм рдХрдИ рдПрдирд┐рдореЗрд╢рдиреЛрдВ рдХреЛ рд╕рдореВрд╣рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ NSFetchedResultsController рдФрд░ CoreData рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЕрдкрдбреЗрдЯ рдХреЗ рдХрд╛рд░рдг рд╣реИред
рдРрд╢ рдлрд╝рд░реЛ рд╕реЗ рдПрдХ
рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХреЛрд░рдбрд╛рдЯрд╛ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХреЗ рд╕рд╛рде рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
3. рдЖрдк рд╕реЗрдХреНрд╢рди рдФрд░ рд╕реЗрд▓ рдХреЛ рдПрдХ рдкрд░рдлреЙрд░реНрдордмреИрдЪрдЕрдк рдмреНрд▓реЙрдХ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЕрдкрдЧреНрд░реЗрдб рд╕реЗ рддрд╛рддреНрдкрд░реНрдп рд╕рдореНрдорд┐рд▓рди рдпрд╛ рд╡рд┐рд▓реЛрдкрди рд╕реЗ рд╣реИред
*** рдЕрдирдХрд╣рд╛ рдЕрдкрд╡рд╛рдж 'NSInternalInconsistencyException' рдЕрдкрд╡рд╛рдж рдХреЗ рдХрд╛рд░рдг рд╕рдорд╛рдкреНрддрд┐ рдРрдк, рдХрд╛рд░рдг: 'рдЕрдорд╛рдиреНрдп рдЕрджреНрдпрддрди: рдЕрдорд╛рдиреНрдп рд╕рдВрдЦреНрдпрд╛ рдЕрдиреБрднрд╛рдЧред рдЕрджреНрдпрддрди рдХреЗ рдмрд╛рдж рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (1) рдЕрджреНрдпрддрди (0) рд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдпрд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд┐рдП рдЧрдП рдпрд╛ рд╣рдЯрд╛рдП рдЧрдП рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╢реВрдиреНрдп (0 рд╕рдореНрдорд┐рд▓рд┐рдд, 0) рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ред ')
рдЯрд┐рдкреНрдкрдгреАред рдПрдХ рдмрд▓реНрдХрд┐ рдЕрдЬреАрдм рд╕рдорд╕реНрдпрд╛ рд╣реИ, рджреЛ рд▓рдЧрд╛рддрд╛рд░ рдкреНрд░рджрд░реНрд╢рдирдмреИрдЪрдбреЗрдЯреНрд╕ рдмреНрд▓реЙрдХ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рдмреНрд▓реЙрдХ рдЦрдВрдбреЛрдВ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рджреВрд╕рд░реЗ рдмреНрд▓реЙрдХ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВред
4. рдЖрдк reloadData рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж PerformBatchUpdates рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рдЦрдВрдб 0 рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕, рд▓реЗрдХрд┐рди рдЕрджреНрдпрддрди рд╕реЗ рдкрд╣рд▓реЗ рдХреЗрд╡рд▓ 0 рдЦрдВрдб рд╣реИрдВ
рдЯрд┐рдкреНрдкрдгреАред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ UICollectionView рдореЗрдВ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдирд╛ UITableView рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
5 рдлрд░рд╡рд░реА 2014 рддрдХ
рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред рд░реАрд▓реЛрдбрдбрд╛рдЯрд╛ рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреИрд╕рд╛рдЦреА рд╡рд┐рдзрд┐ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдирдпрд╛ UICollectionViewLayout рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ
[collectionView setCollectionViewLayout:layout animated:NO];
рдЕрдВрджрд░ рдХреА рд╡рд┐рдзрд┐ рдирд┐рдЬреА рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реАрд▓реЛрдбреЗрдЯрд╛ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧреАред рд╕рдорд╛рдзрд╛рди рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм UICollectionView рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддрддреНрд╡ / рд╕реЗрд▓ рдереЗред рдпрджрд┐ рдХреЛрдИ рд╕реЗрд▓ рдирд╣реАрдВ рдереЗ - рдкрд╣рд▓реА рдмрд╛рд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛, рддреЛ рджреВрд╕рд░реА рдмрд╛рд░ рдЖрдк рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рд╕реБрдЭрд╛рдП рдЧрдП рд╣реИрдХ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
PALKOVNIK рдХреЛ рдзрдиреНрдпрд╡рд╛рджред
3 рдорд╛рд░реНрдЪ 2014 рддрдХ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред UICollectionView рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ рдмреИрд╕рд╛рдЦреА рддрд░реАрдХрд╛:
[collection.collectionView reloadData]; [collection.collectionView performBatchUpdates:nil completion:nil];
5. UICollectionViewFlowLayout рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдпрджрд┐ рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдпрд╛ рдкрд╛рдж рд▓реЗрдЦ рдиреЛрдирдЬрд╝рд░реЛ рд╣реИ, рддреЛ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп: viewForSupplementaryElementOfOind: atIndexPath: рд╡рд┐рдзрд┐ рдХреЛ рд╢реВрдиреНрдп рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдпрд╣ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
*** рдЕрдирдХрд╣рд╛ рдЕрдкрд╡рд╛рдж 'NSInternalInconsistencyException' рдЕрдкрд╡рд╛рдж рдХреЗ рдХрд╛рд░рдг рд╕рдорд╛рдкреНрддрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рдХрд╛рд░рдг: 'рджреГрд╢реНрдп -collectionView рд╕реЗ рд▓реМрдЯрд╛: viewForSupplementaryElementOfKind: atIndexPath (UICollectionElementKindSectionFooter, <NSIndexPath: 0x85555) рдХреЙрд▓рд┐рдВрдЧ -DeueueReusableSupplementaryViewOfKind: withReuseIdentifier: forIndexPath: рдпрд╛ nil ((null)) 'рд╣реИ
рдЯрд┐рдкреНрдкрдгреАред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдпрд╛ рдкрд╛рдж рд▓реЗрдЦ рд╡рд╛рд▓рд╛ UICollectionView рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╡рд┐рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewFlowLayout *)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)sectionNumber
рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдХреЛрдИ рд╣реЗрдбрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ CGSizeZero рд▓реМрдЯрд╛рдПрдВред
iOS 6
1. UICollectionViewFLOWLayoutред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реЗрд▓ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЦрдВрдб рд╣реИ, рдФрд░ рдЖрдкрдиреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкрджреНрдзрддрд┐ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рджреГрд╢реНрдп: рд▓реЗрдЖрдЙрдЯ: рд╕рдВрджрд░реНрднрдГрд╕рд╛рдЗрдлреЙрд░рд╣реЗрдбрд░рдЗрдиреНрдлреЗрдХреНрд╢рди: рдЖрдк рднрд╛рдЧреНрдп рд╕реЗ рдмрд╛рд╣рд░ рд╣реИрдВ, рдХреНрд░реИрд╢ рд░рдирдЯрд╛рдЗрдоред
*** рдЗрд╕рдореЗрдВ рд╡рд┐рдлрд▓рддрд╛ - [UICollectionViewData indexPathForItemAtGlobalIndex]:
рд╡реИрд╢реНрд╡рд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХ 805306368 рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХрд╛рдВрдХ рдкрде рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдЬрдм рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдореЗрдВ рдХреЗрд╡рд▓ 0 рдЖрдЗрдЯрдо рд╣реИрдВ
рдЯрд┐рдкреНрдкрдгреАред рдЖрдкрдХреЛ рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛: рд▓реЗрдЖрдЙрдЯ: referenceSizeForHeaderInSection: рд╡рд┐рдзрд┐, рдФрд░ рдпрджрд┐ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдХреЛрдИ рд╕реЗрд▓ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ CGSizeZero рд▓реМрдЯреЗрдВред
2. рдХрднреА-рдХрднреА рд░реАрд▓реЛрдбрдбреЗрдЯ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреБрд░рд╛рдиреА рдХреЛрд╢рд┐рдХрд╛рдПрдВ рдпрдерд╛рд╡рдд рдмрдиреА рд░рд╣рддреА рд╣реИрдВ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ UICollectionViewDatasource рддрд░реАрдХреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрдо рд╣реИ рдЬрдм UICollectionView рдХреАрдмреЛрд░реНрдб рджреНрд╡рд╛рд░рд╛, рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп UIView рджреНрд╡рд╛рд░рд╛ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред
iOS 7
1. рдпрджрд┐ рд╕реЗрд▓ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЕрдВрддрд┐рдо рд╣реИ, рд╕рд╛рде рд╣реА UICollectionView рдореЗрдВ рдкрд╛рдж рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐, рдЪрд╛рд▓ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реБрдПред ItAAAIndexPath: tondexPath: рдЗрд╕ рд╕реЗрд▓ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЕрдиреНрдп рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд┐рдзрд┐ рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рдЖрдПрдЧреА
рдЕрдирдХреИрдкреНрдб рдЕрдкрд╡рд╛рдж 'NSInternalInconsistencyException' рдЕрдкрд╡рд╛рдж рдХреЗ рдХрд╛рд░рдг рд╕рдорд╛рдкреНрддрд┐ рдРрдк, рдХрд╛рд░рдг: 'no UICollectionViewLayoutAttributes рдЖрд╡реГрддреНрддрд┐ for -layoutAttributesForSupplementaryElementertffKind: UICollectionElementKindSectionFooter рдкрд░ рдкрде <NSIndexPath: 0 Kb
рдЯрд┐рдкреНрдкрдгреАред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдкрд╣рд▓рд╛ рдЖрдЗрдЯрдо рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рд╕рдорд╛рди рд╣реИ, рдпрджрд┐ рдЖрдЗрдЯрдо рдЕрдВрддрд┐рдо рд╣реИ, рддреЛ рд╣рдо reloadData рдХрд╣рддреЗ рд╣реИрдВред
2. рдЙрд╕ рд╕рдордп рдХрд┐рд╕реА рдЕрдиреБрднрд╛рдЧ рдХреЛ рд╣рдЯрд╛рдирд╛ рдЬрдм рд╕реНрдХреНрд░реАрди рдкрд░ UICollectionView рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдЧрд┐рд░рд╛рд╡рдЯ рдЖрддреА рд╣реИред
*** рдореЗрдВ рдЬреЛрд░-рдЬрдмрд░рджрд╕реНрддреА рдХреА рд╡рд┐рдлрд▓рддрд╛ - [UICollectionViewData validateLayoutInRect:], /SourceCache/UIKit_Sim/UIKit-2903.23/UICollectionViewDD.mpm41
2014-01-10 17: 34: 55.198 рдПрд╕рдПрдордПрд╕-рдмреИрдВрдХ [47090: 70b] *** рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдкрд╡рд╛рдж рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рдХрд╛рд░рдг рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдРрдк 'NSInternalInconsistencyException', рдХрд╛рд░рдг: 'UICollectionView рдиреЗ рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдкрде рд╡рд╛рд▓реЗ рд╕реЗрд▓ рдХреЗ рд▓рд┐рдП рд▓реЗрдЖрдЙрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬреЛ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ: <NSIndexPath: 0xc000000000000056> {рд▓рдВрдмрд╛рдИ = 2, рдкрде = 1 - 0} '
рдЯрд┐рдкреНрдкрдгреАред рдЙрд╕ рд╕рдордп рдЬрдм UICollectionView рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд╣рдо рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдФрд░ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЛ рд╢реВрдиреНрдп рдХрд░ рджреЗрдВрдЧреЗред
self.collectionView.delegate = nil; self.collectionView.dataSource = nil;
3. iOS рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░, iPad 2 рдФрд░ iPad 3 UICollectionViewCell рдХреЗ рд▓рд┐рдП рдкреБрди: рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдкрд╣реБрдБрдЪ рд╢реЙрд░реНрдЯрдХрдЯ рд╕рдХреНрд╖рдо рд╣реИрдВ, рддреЛ рднреА, рдПрдХ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЯрд┐рдкреНрдкрдгреАредрдЖрдк рд╕реНрдЯреИрдХ рдкрд░ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ:
http://stackoverflow.com/questions/19276509/uicollectionview-do-not-reuse-cellsрд░рдбрд╛рд░:
http://openradar.appspot.com/15357491рдЕрдВрдд
рд╕реВрдЪреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреВрд░ рд╣реЛ рд╕рдХрддреА рд╣реИ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ UICollectionView рдмрд▓реНрдХрд┐ рдЕрд╕реНрдерд┐рд░ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рджрд┐рди Apple рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВред рдЗрд╕ рдмреАрдЪ, рдореИрдВ рдПрдХ
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ UICollectionView рдХреЗ рд╕рд╛рде рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рдереАред
рджрд░рдЕрд╕рд▓, рдпрд╣ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдерд╛ рдХрд┐ рд▓реЗрдЦрдХ рдиреЗ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЕрдзрд┐рдХрд╛рдВрд╢ рдмрдЧ рдкрд╛рдПред рдЗрд╕ рдврд╛рдВрдЪреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп рдХрднреА рднреА iOS SDK рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдЖрдЬ iOS 6 рдФрд░ iOS 7 рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝ рджреА рдЧрдИ рдмреИрд╕рд╛рдЦреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдмрди рдЧрдИ рд╣реИред UICollectionView + NSInternalInconsistencyException рдирд╛рдордХ рджреБрдГрд╕реНрд╡рдкреНрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЕрдирдореЛрд▓ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдпрд╛ рдЕрдиреНрдп UICollectionView рдмрдЧ тАЛтАЛрдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ - рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ!
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!