Я пытаюсь программно добавить кнопки в представление под NSTextField, которое уже находится в представлении. Представление было создано в IB и использует ограничения. Это NSTableCellView, но я сомневаюсь, что в данном случае это имеет значение. Мой код таков:
NSView *previousView = self.pathsField;
for( NSString *path in self.revision.paths )
{
NSButton *pb = [[NSButton alloc] initWithFrame: bframe];
pb.bezelStyle = NSRoundRectBezelStyle;
[self addSubview: pb];
pb.title = path;
[self addConstraint: [NSLayoutConstraint constraintWithItem: pb
attribute: NSLayoutAttributeTop
relatedBy: NSLayoutRelationEqual
toItem: previousView
attribute: NSLayoutAttributeBottom
multiplier: 1 constant: 2.0]];
[buttons addObject: pb];
bframe.origin.y += 20;
previousView = pb;
}
self.pathButtons = buttons;
Если я возьму вызов addConstraint, кнопки будут добавлены без жалоб (просто не в нужном месте). С вызовом addConstraint я получаю много сообщений о конфликтах ограничений в консоли отладки, и некоторые из моих ограничений, созданных IB, нарушаются.
Очевидно, я делаю что-то не так. Я ожидал, что ограничение потребует, чтобы верхняя часть новой кнопки была на 2 пикселя ниже нижней части предыдущего представления или кнопки. Не похоже, что это должно вызывать какие-либо конфликты, так где я?