Interface Builder 3 -- Completely New!

  • Greetings all.

    I've got my copy of Leopard installed and running well. I'm still
    learning Cocoa (Hillegass, chapter 21 right now), and things are
    proceeding well enough. I was nervous about any updates to XCode, but
    turns out that app is substantively unchanged.

    Interface Builder is a completely different story. It looks fantastic,
    but where the heck is the Class Browser? I need to instantiate a
    subclass in the NIB but I don't have a clue where to do it. I went
    through the IB documentation, but there's no "What's New" document,
    which is shocking considering the changes to this app! It was easy to
    find for XCode.

    Can anyone either point out the means to instantiate a subclass, or
    point me to the docs?

    Thanks!
    Aaron.

    --
    Aaron Vegh, Principal
    Innoveghtive Inc.
    P: (647) 477-2690
    C: (905) 924-1220
    www.innoveghtive.com
    www.website-in-a-day.com
  • My radar on this topic came back as a duplicate of a years-old bug.
    (Makes you wonder how long IB3 has been in development.)

    I'm sticking with IB2 until this is resolved… it's usable on Leopard if
    you install Xcode 2.5. IB3 looks cool, but the way controls are grouped
    makes them harder to find, and there still seem be gaps in the
    functionality, particularly for the Cocoa class hierarchy.

    Aaron Vegh wrote:
    > Greetings all.
    >
    > I've got my copy of Leopard installed and running well. I'm still
    > learning Cocoa (Hillegass, chapter 21 right now), and things are
    > proceeding well enough. I was nervous about any updates to XCode, but
    > turns out that app is substantively unchanged.
    >
    > Interface Builder is a completely different story. It looks fantastic,
    > but where the heck is the Class Browser? I need to instantiate a
    > subclass in the NIB but I don't have a clue where to do it. I went
    > through the IB documentation, but there's no "What's New" document,
    > which is shocking considering the changes to this app! It was easy to
    > find for XCode.
    >
    > Can anyone either point out the means to instantiate a subclass, or
    > point me to the docs?
    >
    > Thanks!
    > Aaron.
    >
    >
  • It figures, after sending my message, I should find the answer!

    The IB documentation, under "Connections and Bindings", then
    "Integrating Your Code with Interface Builder", talks about how you
    choose an NSObject, and then use the inspector to specify a subclass.
    The object is automatically instantiated.

    I'm still unclear on how to connect with XCode, a la the fact that you
    can't drag and drop a class header file onto the NIB palette anymore.

    So while I agree it's very different, my issue really is that there's
    no migration document: no easy way to see what they've changed in one
    place.

    Cheers,
    Aaron.

    On 10/26/07, John Stiles <jstiles...> wrote:
    > My radar on this topic came back as a duplicate of a years-old bug.
    > (Makes you wonder how long IB3 has been in development.)
    >
    > I'm sticking with IB2 until this is resolved… it's usable on Leopard if
    > you install Xcode 2.5. IB3 looks cool, but the way controls are grouped
    > makes them harder to find, and there still seem be gaps in the
    > functionality, particularly for the Cocoa class hierarchy.
    >
    >
    > Aaron Vegh wrote:
    >> Greetings all.
    >>
    >> I've got my copy of Leopard installed and running well. I'm still
    >> learning Cocoa (Hillegass, chapter 21 right now), and things are
    >> proceeding well enough. I was nervous about any updates to XCode, but
    >> turns out that app is substantively unchanged.
    >>
    >> Interface Builder is a completely different story. It looks fantastic,
    >> but where the heck is the Class Browser? I need to instantiate a
    >> subclass in the NIB but I don't have a clue where to do it. I went
    >> through the IB documentation, but there's no "What's New" document,
    >> which is shocking considering the changes to this app! It was easy to
    >> find for XCode.
    >>
    >> Can anyone either point out the means to instantiate a subclass, or
    >> point me to the docs?
    >>
    >> Thanks!
    >> Aaron.
    >>
    >>
    >

    --
    Aaron Vegh, Principal
    Innoveghtive Inc.
    P: (647) 477-2690
    C: (905) 924-1220
    www.innoveghtive.com
    www.website-in-a-day.com
  • Open the library and search for "object" (it's a blue cube). Drag it
    out into your document to create an instance, and use the inspector to
    set the subclass class.

    +Melissa

    On Oct 26, 2007, at 17:26, Aaron Vegh wrote:

    > Greetings all.
    >
    > I've got my copy of Leopard installed and running well. I'm still
    > learning Cocoa (Hillegass, chapter 21 right now), and things are
    > proceeding well enough. I was nervous about any updates to XCode, but
    > turns out that app is substantively unchanged.
    >
    > Interface Builder is a completely different story. It looks fantastic,
    > but where the heck is the Class Browser? I need to instantiate a
    > subclass in the NIB but I don't have a clue where to do it. I went
    > through the IB documentation, but there's no "What's New" document,
    > which is shocking considering the changes to this app! It was easy to
    > find for XCode.
    >
    > Can anyone either point out the means to instantiate a subclass, or
    > point me to the docs?
    >
    > Thanks!
    > Aaron.
    >
    > --
    > Aaron Vegh, Principal
    > Innoveghtive Inc.
    > P: (647) 477-2690
    > C: (905) 924-1220
    > www.innoveghtive.com
    > www.website-in-a-day.com
  • You don't need to drag and drop header files from Xcode into
    Interface Builder anymore. All your classes in Xcode should
    automatically sync up with Interface Builder. If you look at the
    bottom left corner of your nib's document window, there should be a
    little green light.

    King Chung Huang
    Information Technologies
    University of Calgary

    On 26-Oct-07, at 6:37 PM, Aaron Vegh wrote:

    > It figures, after sending my message, I should find the answer!
    >
    > The IB documentation, under "Connections and Bindings", then
    > "Integrating Your Code with Interface Builder", talks about how you
    > choose an NSObject, and then use the inspector to specify a subclass.
    > The object is automatically instantiated.
    >
    > I'm still unclear on how to connect with XCode, a la the fact that you
    > can't drag and drop a class header file onto the NIB palette anymore.
    >
    > So while I agree it's very different, my issue really is that there's
    > no migration document: no easy way to see what they've changed in one
    > place.
    >
    > Cheers,
    > Aaron.
    >
    > On 10/26/07, John Stiles <jstiles...> wrote:
    >> My radar on this topic came back as a duplicate of a years-old bug.
    >> (Makes you wonder how long IB3 has been in development.)
    >>
    >> I'm sticking with IB2 until this is resolved… it's usable on
    >> Leopard if
    >> you install Xcode 2.5. IB3 looks cool, but the way controls are
    >> grouped
    >> makes them harder to find, and there still seem be gaps in the
    >> functionality, particularly for the Cocoa class hierarchy.
    >>
    >>
    >> Aaron Vegh wrote:
    >>> Greetings all.
    >>>
    >>> I've got my copy of Leopard installed and running well. I'm still
    >>> learning Cocoa (Hillegass, chapter 21 right now), and things are
    >>> proceeding well enough. I was nervous about any updates to XCode,
    >>> but
    >>> turns out that app is substantively unchanged.
    >>>
    >>> Interface Builder is a completely different story. It looks
    >>> fantastic,
    >>> but where the heck is the Class Browser? I need to instantiate a
    >>> subclass in the NIB but I don't have a clue where to do it. I went
    >>> through the IB documentation, but there's no "What's New" document,
    >>> which is shocking considering the changes to this app! It was
    >>> easy to
    >>> find for XCode.
    >>>
    >>> Can anyone either point out the means to instantiate a subclass, or
    >>> point me to the docs?
    >>>
    >>> Thanks!
    >>> Aaron.
    >>>
    >>>
    >>
    >
    >
    > --
    > Aaron Vegh, Principal
    > Innoveghtive Inc.
    > P: (647) 477-2690
    > C: (905) 924-1220
    > www.innoveghtive.com
    > www.website-in-a-day.com
  • In the Library pick Object and drag it to the ... uh, whatever the
    window is called where all the instances are.

    Select the instance, hit cmd-6 to get the inspector on the right page.
    In Class start typing the name of your class and it'll autocomplete.
    It pulls class names from the Xcode index I believe.

    Anyway - confused me too and I had to ask someone else how to do
    it. :) I still find myself dragging header files towards IB from time
    to time.

    On 26-Oct-07, at 8:30 PM, John Stiles wrote:

    > My radar on this topic came back as a duplicate of a years-old bug.
    > (Makes you wonder how long IB3 has been in development.)
    >
    > I'm sticking with IB2 until this is resolved… it's usable on Leopard
    > if you install Xcode 2.5. IB3 looks cool, but the way controls are
    > grouped makes them harder to find, and there still seem be gaps in
    > the functionality, particularly for the Cocoa class hierarchy.
    >
    >
    > Aaron Vegh wrote:
    >> Greetings all.
    >>
    >> I've got my copy of Leopard installed and running well. I'm still
    >> learning Cocoa (Hillegass, chapter 21 right now), and things are
    >> proceeding well enough. I was nervous about any updates to XCode, but
    >> turns out that app is substantively unchanged.
    >>
    >> Interface Builder is a completely different story. It looks
    >> fantastic,
    >> but where the heck is the Class Browser? I need to instantiate a
    >> subclass in the NIB but I don't have a clue where to do it. I went
    >> through the IB documentation, but there's no "What's New" document,
    >> which is shocking considering the changes to this app! It was easy to
    >> find for XCode.
    >>
    >> Can anyone either point out the means to instantiate a subclass, or
    >> point me to the docs?
    >>
    >> Thanks!
    >> Aaron.
    >>
    >>

  • Say I've got a custom NSView subclass with its own outlets and
    actions. How does that mesh with IB3? I couldn't make it work right.

    On Oct 26, 2007, at 6:08 PM, Guy English wrote:

    > In the Library pick Object and drag it to the ... uh, whatever the
    > window is called where all the instances are.
    >
    > Select the instance, hit cmd-6 to get the inspector on the right
    > page. In Class start typing the name of your class and it'll
    > autocomplete. It pulls class names from the Xcode index I believe.
    >
    > Anyway - confused me too and I had to ask someone else how to do
    > it. :) I still find myself dragging header files towards IB from
    > time to time.
    >
    > On 26-Oct-07, at 8:30 PM, John Stiles wrote:
    >
    >> My radar on this topic came back as a duplicate of a years-old
    >> bug. (Makes you wonder how long IB3 has been in development.)
    >>
    >> I'm sticking with IB2 until this is resolved… it's usable on
    >> Leopard if you install Xcode 2.5. IB3 looks cool, but the way
    >> controls are grouped makes them harder to find, and there still
    >> seem be gaps in the functionality, particularly for the Cocoa
    >> class hierarchy.
    >>
    >>
    >> Aaron Vegh wrote:
    >>> Greetings all.
    >>>
    >>> I've got my copy of Leopard installed and running well. I'm still
    >>> learning Cocoa (Hillegass, chapter 21 right now), and things are
    >>> proceeding well enough. I was nervous about any updates to XCode,
    >>> but
    >>> turns out that app is substantively unchanged.
    >>>
    >>> Interface Builder is a completely different story. It looks
    >>> fantastic,
    >>> but where the heck is the Class Browser? I need to instantiate a
    >>> subclass in the NIB but I don't have a clue where to do it. I went
    >>> through the IB documentation, but there's no "What's New" document,
    >>> which is shocking considering the changes to this app! It was
    >>> easy to
    >>> find for XCode.
    >>>
    >>> Can anyone either point out the means to instantiate a subclass, or
    >>> point me to the docs?
    >>>
    >>> Thanks!
    >>> Aaron.
    >>>
    >>>

    >
  • Make sure the outlets and actions are defined properly in the header.
    Then in IB drag out an NSView, set it's subclass to your subclass, and
    you should be good to go.

    The nice thing about IB3 is it seems to know when you change your
    header. In fact, it automatically finds your headers, no importing
    required.

    Sent from my iPhone

    On Oct 26, 2007, at 6:47 PM, John Stiles <jstiles...> wrote:

    > Say I've got a custom NSView subclass with its own outlets and
    > actions. How does that mesh with IB3? I couldn't make it work right.
    >
    >
    > On Oct 26, 2007, at 6:08 PM, Guy English wrote:
    >
    >> In the Library pick Object and drag it to the ... uh, whatever the
    >> window is called where all the instances are.
    >>
    >> Select the instance, hit cmd-6 to get the inspector on the right
    >> page. In Class start typing the name of your class and it'll
    >> autocomplete. It pulls class names from the Xcode index I believe.
    >>
    >> Anyway - confused me too and I had to ask someone else how to do
    >> it. :) I still find myself dragging header files towards IB from
    >> time to time.
    >>
    >> On 26-Oct-07, at 8:30 PM, John Stiles wrote:
    >>
    >>> My radar on this topic came back as a duplicate of a years-old
    >>> bug. (Makes you wonder how long IB3 has been in development.)
    >>>
    >>> I'm sticking with IB2 until this is resolved… it's usable on Leo
    >>> pard if you install Xcode 2.5. IB3 looks cool, but the way contr
    >>> ols are grouped makes them harder to find, and there still seem
    >>> be gaps in the functionality, particularly for the Cocoa class h
    >>> ierarchy.
    >>>
    >>>
    >>> Aaron Vegh wrote:
    >>>> Greetings all.
    >>>>
    >>>> I've got my copy of Leopard installed and running well. I'm still
    >>>> learning Cocoa (Hillegass, chapter 21 right now), and things are
    >>>> proceeding well enough. I was nervous about any updates to XCode,
    >>>> but
    >>>> turns out that app is substantively unchanged.
    >>>>
    >>>> Interface Builder is a completely different story. It looks
    >>>> fantastic,
    >>>> but where the heck is the Class Browser? I need to instantiate a
    >>>> subclass in the NIB but I don't have a clue where to do it. I went
    >>>> through the IB documentation, but there's no "What's New" document,
    >>>> which is shocking considering the changes to this app! It was
    >>>> easy to
    >>>> find for XCode.
    >>>>
    >>>> Can anyone either point out the means to instantiate a subclass, or
    >>>> point me to the docs?
    >>>>
    >>>> Thanks!
    >>>> Aaron.
    >>>>
    >>>>

    >>

  • On Oct 26, 2007, at 8:30 PM, John Stiles wrote:

    > My radar on this topic [can't subclass stuff in IB 3] came back as a
    > duplicate of a years-old bug.

    My bug report came back the same way.

    > I'm sticking with IB2 until this is resolved… it's usable on Leopard
    > if you install Xcode 2.5. IB3 looks cool, but the way controls are
    > grouped makes them harder to find, and there still seem be gaps in
    > the functionality, particularly for the Cocoa class hierarchy.

    One example case I ran into was in trying to set the class of File's
    Owner to my NSWindowController subclass.  I can drag an NSObject off
    the palette and set its class to my custom class, but then I don't get
    the outlets and actions that I should inherit from NSWindowController.

    I'm using a Common Lisp programming environment with an Objective-C
    bridge, so I don't even have header files for IB to parse.
  • Hey Aaron -

    I'm on my iPhone, so I can only give you a brief answer. To
    instantiate an instance of a custom class, drag an instance of
    NSObject (the blue cube) out of the library and then use the custom
    class inspector (command+6) to change the custom class.

    Good luck with IB 3.0, hope you enjoy it -
    Jon Hess

    On Oct 26, 2007, at 5:26 PM, Aaron Vegh <aaronvegh...> wrote:

    > Greetings all.
    >
    > I've got my copy of Leopard installed and running well. I'm still
    > learning Cocoa (Hillegass, chapter 21 right now), and things are
    > proceeding well enough. I was nervous about any updates to XCode, but
    > turns out that app is substantively unchanged.
    >
    > Interface Builder is a completely different story. It looks fantastic,
    > but where the heck is the Class Browser? I need to instantiate a
    > subclass in the NIB but I don't have a clue where to do it. I went
    > through the IB documentation, but there's no "What's New" document,
    > which is shocking considering the changes to this app! It was easy to
    > find for XCode.
    >
    > Can anyone either point out the means to instantiate a subclass, or
    > point me to the docs?
    >
    > Thanks!
    > Aaron.
    >
    > --
    > Aaron Vegh, Principal
    > Innoveghtive Inc.
    > P: (647) 477-2690
    > C: (905) 924-1220
    > www.innoveghtive.com
    > www.website-in-a-day.com
  • On Oct 26, 2007, at 7:32 PM, R. Matthew Emerson wrote:
    >
    > I'm using a Common Lisp programming environment with an Objective-C
    > bridge, so I don't even have header files for IB to parse.

    Doh! I bet they didn't think of that one ;)

    Personally I'm extremely leery of any tool that tries to do a quick-
    and-dirty parse of source code to glean information or metadata out
    of it; if it doesn't at least implement a full preprocessor, IMO it
    is doomed to failure, and that's just to let you get to a bare
    minimum level of functionality. There are so many little gotchas that
    you just can't handle in a regular expression.
  • On Oct 26, 2007, at 7:32 PM, R. Matthew Emerson wrote:

    > One example case I ran into was in trying to set the class of File's
    > Owner to my NSWindowController subclass.  I can drag an NSObject off
    > the palette and set its class to my custom class, but then I don't
    > get the outlets and actions that I should inherit from
    > NSWindowController.
    >
    > I'm using a Common Lisp programming environment with an Objective-C
    > bridge, so I don't even have header files for IB to parse.

    Just add the outlets and actions in Interface Builder 3's Object
    Identity inspector -- the same one you used to set its custom class --
    in the "Class Actions" and "Class Outlets" slices.  Set the class name
    first, and then its outlets and actions.

    Interface Builder 3 specifically allows you to set a custom class that
    doesn't have a corresponding Objective-C header file and add arbitrary
    outlets and actions to it in order to support languages bridged to
    Objective-C.

    Since you're using a bridge, I also thought I should point out that
    BridgeSupport is an important new Leopard feature:  Leopard's public
    frameworks have XML descriptions of the APIs they expose that can be
    used by language bridges.  This lets them avoid messy things like
    having to parse header files to figure out how to generate calls into
    or parse results from the Objective-C runtime.  That's how Ruby and
    Python can be used for Cocoa in Leopard; it would be great to see
    other languages like Common Lisp use them as well.

      -- Chris
  • > Say I've got a custom NSView subclass with its own outlets and
    > actions. How does that mesh with IB3? I couldn't make it work right.

    I'm on Tiger right now with no Leopard to hand so this may be off a
    bit or vague.

    In the Library find the Custom View and drag it out to your window.
    Inspect it and on the tab with the blue box (cmd-6) you can change
    it's class. It *should* be able to autocomplete the class name from
    knowing about your Xcode project. Also - the Nib will need to be part
    of the project other wise it'll not be able to see your classes.
    There's a little green light in the bottom of the instances window
    with the project name the nib is part of. After you've got it changed
    to the correct class you can control-drag a line from it to hook up
    it's outlets. Actions should work too. I'm not sure if it's required
    but I always use IBOutlet and IBAction to markup the header file. Any
    changes you make to the header are synced automatically with IB3.
    I've had some weirdness with that, and it can be slightly annoying.
    Sometimes changes won't be picked up. I've found that if I add, say,
    an outlet I'll need to hit Return at the end of the line - the syntax
    coloring will kick in and I guess the symbol db that IB3 shares gets
    updated too. That was on a seed though so maybe it's fixed - haven't
    worked on the GM yet.

    I do miss the old IB, maybe just out of familiarity, but IB3 is
    growing on me. Also IB3 was a little nutty and sometimes just
    dangerous on some of the earlier seeds. If you've not tried it in a
    while give it a shot.

    -Guy
  • On Oct 26, 2007, at 5:30 PM, John Stiles wrote:

    > I'm sticking with IB2 until this is resolved… it's usable on
    > Leopard if you install Xcode 2.5. IB3 looks cool, but the way
    > controls are grouped makes them harder to find, and there still
    > seem be gaps in the functionality, particularly for the Cocoa class
    > hierarchy.

    I'm completely puzzled by this.

    I really can't say enough good about Interface Builder 3. The
    previous app had a great run, but it was definitely time for an
    overhaul. I see IB3 as far more polished and far more relevant to
    what developers are doing now.

    I'm also really surprised by the interest in creating classes within
    IB. You're only saving a few lines of typing at most (less, with copy-
    and-paste and autocompletion) and it makes for an inconsistent
    process since only some classes lend themselves to that approach.

    I think it's much easier to just create the class from a template in
    Xcode and drag it over.

          - Scott

    (IB3 FTW)
  • On Oct 27, 2007, at 3:58 PM, Guy English <guy.english...> wrote:

    >> Say I've got a custom NSView subclass with its own outlets and
    >> actions. How does that mesh with IB3? I couldn't make it work right.
    >
    > I'm on Tiger right now with no Leopard to hand so this may be off a
    > bit or vague.
    >
    > In the Library find the Custom View and drag it out to your window.
    > Inspect it and on the tab with the blue box (cmd-6) you can change
    > it's class. It *should* be able to autocomplete the class name from
    > knowing about your Xcode project. Also - the Nib will need to be
    > part of the project other wise it'll not be able to see your
    > classes. There's a little green light in the bottom of the instances
    > window with the project name the nib is part of. After you've got it
    > changed to the correct class you can control-drag a line from it to
    > hook up it's outlets. Actions should work too. I'm not sure if it's
    > required but I always use IBOutlet and IBAction to markup the header
    > file. Any changes you make to the header are synced automatically
    > with IB3. I've had some weirdness with that, and it can be slightly
    > annoying. Sometimes changes won't be picked up. I've found that if I
    > add, say, an outlet I'll need to hit Return at the end of the line -
    > the syntax coloring will kick in and I guess the symbol db that IB3
    > shares gets updated too. That was on a seed though so maybe it's
    > fixed - haven't worked on the GM yet.
    >

    I think the trick here is to save the file.

    Jon Hess

    > I do miss the old IB, maybe just out of familiarity, but IB3 is
    > growing on me. Also IB3 was a little nutty and sometimes just
    > dangerous on some of the earlier seeds. If you've not tried it in a
    > while give it a shot.
    >
    > -Guy
previous month october 2007 next month
MTWTFSS
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
Go to today