On 24 Sep 2013, at 1:42 PM, Rick Mann <rm...@latencyzero.com> wrote:

> On Sep 24, 2013, at 10:38 , Fritz Anderson <fri...@manoverboard.org> wrote:
> 
>> On 24 Sep 2013, at 3:03 AM, Rick Mann <rm...@latencyzero.com> wrote:
>> 
>>> UIPageViewController seems very clunky. On the surface, it looks similar to 
>>> UITableViewController, but in fact, it behaves very differently. There's no 
>>> view associated with it, nor can you add a view to it (in the storyboard 
>>> editor).
>> 
>> That is correct. The data source for the page-view controller must feed view 
>> controllers to the page controller on demand. The page-view controller does 
>> not know, and does not care, what kind of view controller it gets from any 
>> one request. You may have different view controllers that go into pages. The 
>> design has to allow for this.
> 
>> Create XIBs or Storyboard scenes with your page-layout views. That's the 
>> best you can do.
> 
> I think you're missing what I meant. Of course it's different, in the sense 
> that it provides view controllers instead of views. But it's incredibly 
> cumbersome to use as a first-class citizen in a storyboard. In my case, it's 
> a child of a tab view controller. But there's no way in IB to specify 
> anything about the fixed view hierarchy if you instantiate it in IB (that I 
> can see).

I often do miss what people mean; I have almost no common sense. Let's see if I 
misunderstand you further…

We've done this, but with only one per-page view controller, and without an 
outer wrapping container like a nav or tab controller. I don't think the 
principles are different for the purposes of this discussion.

In a split view, the detail view's root scene belongs to an unexciting 
UIViewController. The view contains a toolbar, and a container view that embeds 
a page-view controller.

Split view
   Master (nav controller)
   Detail (view controller)
      Toolbar (owned by the vc)
      Container (embed segue to page-view controller)
         Page-view controller (detail view controller is data source)

... and that's where the hierarchy dead-ends. You can't put anything inside the 
page-view controller's scene, because so far as application developers are 
concerned, page-view controllers _don't have any views_ of their own.

We do the layout for the pages in orphan scenes in the same storyboard. No link 
to the page-view scene is possible.

(continuing the above hierarchy:)
TextPageViewController
IllustrationPageViewController
...


As I understand it, you're unhappy that you can't drag anything into the 
page-view scene as some kind of default controller managing a default content 
view. Am I right?

It's an interesting idea, and maybe someone can think of a way around my 
objection: The page-view controller is a scene. The (proposed-default) 
page-content controller is also a scene. You then have two controllers, with 
two scenes, in one place. I don't see how to disentangle it, and developers who 
want more than one possible page type will still have to add orphan scenes for 
the more-than-one controllers.

> Perhaps you might think to create a UIViewController that you subclass. Okay, 
> now let's put a container view into it, and then embed a UIPageViewController 
> in that.
> 
> Well, container views are fairly useless in IB, because there's no outlet for 
> the embedded view in the containing view controller. You'd have to iterate 
> the children to find a UIPageViewController, but what if you have more than 
> one? Cumbersome. And there's no way to wire the dataSource and delegate back 
> to the containing view controller.

Put an identifier on the embed segue, and listen for it in the parent 
controller's prepareForSegue:sender:. The segue that comes into the method will 
get you the contained controller.

> I'm having trouble seeing the utility of putting a UIPageViewController in a 
> storyboard for anything but a quick demo app, and then only if you can 
> subclass it (which the docs say you can do in 7 but imply you can't do in 6). 
> Now we're even more like a UITableViewController, except you can't have a 
> view hierarchy in the UIPageViewController.

We agree: you cannot have a view hierarchy in a UIPageViewController. That's 
not a quirk of Interface Builder; it reflects the fact that there is no such 
thing as a view hierarchy in a UIPageViewController. For consistency's sake, 
its scene looks like a view, but it isn't.

I'm surprised it's subclassable; my memory was that it wasn't, and I beat up on 
a junior programmer for doing it. But he was using the page-view controller as 
its own data source, and besides he needed a beating on general principles.

        — F


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to