Как спроектировать отдельный UIView вне любого ViewController в раскадровке? - PullRequest
10 голосов
/ 10 марта 2012

Я хотел бы создать UIView, который больше, чем ViewController в раскадровке (iOS 5).

UIView следует использовать как подпредставление UIScrollView и, следовательно, быть больше, чем любой из моих существующих ViewControllers. Как я могу создать такой UIView в раскадровке и связать его с моим UIScrollView?

Я хотел бы сделать это без файлов XIB, если это возможно.

Спасибо!

Ответы [ 3 ]

20 голосов
/ 10 марта 2012

Я не вижу другого выбора, кроме использования xibs, но это не так раздражает:

//We have file called "View.xib" in our project. It contains one SINGLE view
NSArray *xibContents = [[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:nil];
UIView *view = [xibContents lastObject]; //safer than objectAtIndex:0

[self.scrollview addSubview:view];
self.scrollview.contentSize = view.frame.size; 

Для того, чтобы устанавливать соединения IB, вы можете установить класс filesOwner в xib как ваш viewController, иподключайся как обычно.

2 голосов
/ 10 марта 2012

Вы можете поместить UIView в свой скроллвью и напрямую создать его внутри viewController вашего scrollView

1 голос
/ 07 декабря 2012

Я нашел способ редактировать представление, добавленное к сцене (находящееся на том же уровне иерархии, что и ViewController).

К сожалению, это из hackish типов действий.Моя Xcode версия Version 4.5.2 (4G2008a).Я проверил это в реальном проекте и новом пустом проекте.

Основная идея состоит в том, что Xcode действительно имеет возможность редактировать такие внешние виды, к сожалению, этот режим не активируется напрямую.

В методе, который я обнаружил, вам нужно иметь 2 уровня иерархии внутри внешнего вида:

Scene
|- VC
   |- View
|- ExternalView
   |- SubView1
      |- SubView2
  • Затем перейдите на Document Outline панель
  • найти SubView2 в дереве вашей сцены
  • дважды щелкните по нему

Появится область редактирования, и ее координаты будут сохранены в пользовательских данных проекта, так что вы можете переместить ее в более подходящее местоесли вы хотите, и в следующий раз вы откроете раскадровку в IB на машине, она будет там.Хотя я думаю, что на других машинах вам придется делать это снова (я этого не проверял).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...