Похоже, что каждый раз, когда вы вызываете self.layerControl, вы создаете новый UIScrollView для представления.Таким образом, старый все еще там и в старой позиции, но вы добавили еще одну.
Возможно, сохраните ссылку на каждый UIScrollView и в начале layerControl получите представление прокрутки для данного индекса.
Итак:
- (void)layerControl:(NSInteger)index {
UIScrollView *scrollView = nil;
switch (index) {
case (0): scrollView = self.scrollView1;
/* Repeat for 1 - 6 */
}
if (scrollView == nil) {
// Do the creation of the scrollview here
}
Тогда в вашем вызове метода addFilter:
[self layerControl:[filterController selectedSegmentIndex]]
, а не оператор большого переключателя.
Как бы то ни было, это не такотличная идея - вызывать методы с точечным синтаксисом, как у всех этих вызовов self.layerControl.Вы должны оставить синтаксис точки на время доступа к синтезированному свойству.