Вы должны немного больше прояснить свою проблему, но есть возможность (адаптироваться к вашему случаю).
Я предполагаю, что items
- это массив элементов jQuery (поэтому я звоню .height()
) ...
РЕДАКТИРОВАТЬ: ваше редактирование показывает массив элементов HTML, вы можете преобразовать его в элементы jQuery, например, items = items.map(item => $(item))
let pageInd = 1
// loop over each page
while (items.length) {
let // stores the items of the current page
curPageItems = []
, // current page height
height = 0
// loop over each elements of the current page
curPageElmts: while (items.length) {
// get the next element
const nextElmt = items.shift()
// update height
height += nextElmt.height()
// break loop if the height goes over 1000px
if (height > 1000) break curPageElmts
// otherwise add it to the current page
curPageItems.push(nextElmt)
}
// append those items in the corresponding page
// (jQuery accepts appending arrays of elements)
$(`.page-${pageInd++}`).append(curPageItems)
}
Вы также можете избежать последней строки и сохранить результат в новом массиве. .
Я рекомендовал бы использовать шаблон делегации для решения проблемы. Создайте свойство
@property (nonatomic, assign) id <MyModalViewDelegate> delegate;
И соответствующий протокол
@protocol MyModalViewDelegate
@optional
- (void)myModalViewControllerDidFinish:(MyModalViewController *)aModalViewController;
@end
Когда пользователь закончит с Вашим представлением (например, коснется кнопки сохранения), отправьте это сообщение:
if ([self.delegate respondsToSelector:@selector(myModalViewControllerDidFinish:)])
[self.delegate myModalViewControllerDidFinish:self];
Теперь, установите делегата в контроллере представления, который должен управлять всем этим, и он будет уведомлен, когда контроллер представления будет закончен. Обратите внимание необходимость в контроллере представления для отклонения модального контроллера представления. Но, логически, это имеет смысл, так как это был объект, который представил модальный контроллер представления во-первых.
Это - то, как Apple решает эту проблему в, например, UIImagePickerController и UIPersonPickerController.
Существует несколько способов, которыми можно обработать это. Самое простое должно, вероятно, только добавить свойство UIViewController в myModalViewController и установить его на page1Controller перед представлением его:
myModalViewController.logicalParent = self; //page1Controller
[self presentModalViewController:myModalViewController animated:YES];
Просто удостоверьтесь, что Вы добавляете соответствующую переменную экземпляра @property, и @synthesize для logicalParent к myModalViewController, затем у Вас будет способ передать данные назад в ViewController, который инициировал модальное диалоговое окно. Это также для передающих данных назад и вперед между разными уровнями навигации, прежде чем Вы продвинете и вытолкаете их на стеке.
Одна важная вещь волноваться о при выполнении этого состоит в том, что легко добраться, сохраняют циклы, если Вы не осторожны. В зависимости от точно, как Вы структурируете это, Вы, возможно, должны были бы использовать, присваивают свойства.