Какао - Показать Xib на другом XIB - PullRequest
4 голосов
/ 18 марта 2012

Может кто-нибудь сказать мне, как (или направить меня к информации о), отображая .xib (перо) на другом .xib (перо).

Как бы я ни хотел разместить его так, чтобы я мог программно перемещать его вокруг основного пера, вроде этого (который, очевидно, не работает)

- (void)drawRect:(NSRect)dirtyRect
{

    NSRect customView = NSMakeRect(pos1, pos1, 200, 100);

    [[NSBundle mainBundle] loadNibNamed:@"secondXib" owner:self];

    NSRectFill (customView);
}

И я хочу сделать это для Mac OS X (не iPhone). (Кстати, использование xCode 4 в случае, если это имеет значение)

Ответы [ 2 ]

9 голосов
/ 18 марта 2012

Вы можете легко загрузить вид из другого пера, используя NSViewController.В своем кончике вы должны просто установить пользовательский класс для владельца файла *1003* и подключить view выход владельца файла , чтобы указать на представление, которое вы хотите загрузить.Затем вы можете просто сделать это:

//create an NSViewController and use it to load the nib
NSViewController* vc = [[NSViewController alloc] initWithNibName:@"YourNibName" bundle:nil];
//get the view from the view controller
NSView* loadedView = [vc view];
//release the view controller so we don't leak
[vc release];
//add the view as a subview of your main view
[mainView addSubview:loadedView];
//position the view
[loadedView setFrameOrigin:NSMakePoint(100.0, 100.0)];

Вам не нужно ничего делать в drawRect:.Подвид будет отображаться сам, и drawRect: будет вызываться автоматически при перемещении подпредставления.

Вы должны прочитать Руководство по программированию представления для Какао .Очень важно понять, как работают представления, и из вашего вопроса ясно, что у вас еще нет этого понимания.

Вам также следует прочитать Руководство по рисованию какао .

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

Большое спасибо. Еще одна альтернатива (в основном это не программирующий способ сделать это) - добавить объект NSViewController в ваш первый xib и установить его, используя указанное вами имя nib.Во втором xib-файле не забудьте установить имя класса в поле «custom class» в представлении (и NSViewController в владельце файла), иначе это не будет работать.

...