iPhone — Как правильно реализовать UIScrollView?

#iphone #controller #scrollview

#iPhone #контроллер #scrollview

Вопрос:

У меня есть два UIViewControllers, каждый со своими собственными файлами nib. Каждый контроллер служит для разных целей. Идея заключалась в том, чтобы добавить UIScrollController и добавить к нему оба UIViewControllers, чтобы пользователь мог легко прокручивать между ними обоими.

Q1) Возможно ли это вообще? Или я неправильно понял всю цель UIScollControllers, если да, то какова лучшая альтернатива.

Я покопался в Интернете, и лучшее, что я могу придумать, это:

 ScoreViewController *scoreController = [[ScoreViewController alloc] initWithNibName:@"ScoreViewController" bundle:nil];
scoreController.view.frame = CGRectMake(0.0f, 0.0f, 960f, 640f);
[self.scrollview addSubview:scoreController.view];
[scoreController release];

SettingsViewController *settingsController = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];
settingsController.view.frame = CGRectMake(0.0f, 0.0f, 960f, 640f);
[self.scrollview addSubview:settingsController.view];
[settingsController release];
  

Этот код вводится внутри моего класса RootViewController. Похоже, это не работает, поскольку я не могу прокручивать между двумя добавленными мной UIViewControllers (оценка и настройки). Все, что отображается на экране, — это второй добавленный контроллер — SettingsViewController.

Q2) Почему это не работает?

Спасибо. 🙂

Комментарии:

1. Если вы получите ответ, который решит вашу проблему, вы можете выразить свою признательность, приняв его .

2. Спасибо — я пробовал прошлой ночью, но не знал, как это сделать 🙂

Ответ №1:

На самом деле вы правильно размещаете первый контроллер, затем вы помещаете второй над ним.

 settingsController.view.frame = CGRectMake(0.0f, 0.0f, 960f, 640f);
  
  1. 960×640 — это неправильный способ ввода координат (фактический размер 320×480) двойной размер используется только для файлов изображений
  2. 0.0f, 0.0f означает x: 0, y: 0, поэтому во втором контроллере вам нужно x: 320, y: 0

затем вам нужно установить contentSize для ScrollView

 scrollview.contentSize = CGSizeMake(320*2, 480);
  

Затем включите подкачку ScrollView;

 scrollview.pagingEnabled = YES;
  

И это должно сработать 🙂