Почему бы вам не попробовать функцию, которая просматривает все три раздела, видит, в каких из них слишком много элементов, а затем перемещает их.Затем ... При возврате количества элементов в каждом представлении коллекции вызывайте эту функцию, когда она превышает максимальное количество элементов для каждого раздела.Пожалуйста, дайте мне знать, если вам нужны разъяснения.
func collectionView(.....numberOfItemsOrRows?...){
if (newArrayCountForList1 > maxElements){
redistributeArrayValues()
} // copy the above if statement with function inside for the next 2 arrays
(Assuming each section has an array representing elements in that section)
}