Я успешно создал проект в swift, где я нажимаю кнопки на моем viewController
, чтобы загрузить другие viewControllers
или xib
файлы в контейнер. Просто чтобы дать вам представление:
Это прекрасно работает, но мне трудно перевести его на objective-c
, гдекод на самом деле нужен. Вот как выглядит код swift
при нажатии кнопки:
let sub3 = UINib(nibName: "thirdXib", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! UIView
containerOutlet.addSubview(sub3)
NSLayoutConstraint.activate([
sub3.leadingAnchor.constraint(equalTo: containerOutlet.leadingAnchor),
sub3.trailingAnchor.constraint(equalTo: containerOutlet.trailingAnchor),
sub3.topAnchor.constraint(equalTo: containerOutlet.topAnchor),
sub3.bottomAnchor.constraint(equalTo: containerOutlet.bottomAnchor)
])
Теперь я бы хотел, чтобы весь этот код был вместо objective-c
. В objective-c
я выполнил первую часть, которую я считаю верной:
UINib *nib = [UINib nibWithNibName:@"SecondView" bundle:nil];
[nib instantiateWithOwner:self options:nil];
[containerOutlet addSubview:((UIView*)nib)];
Но у меня возникла проблема с последней частью, NSLayoutConstraint activateConstraints
[NSLayoutConstraint activateConstraints:@[
[nib.lead],
[nib.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor],
]
];
. компилятор говорит, что property lead not found on object of type UIBib
и то же самое в коде чуть ниже. Я попробовал их вариант, но не понял правильно. Как мне установить трейлинг, ведущий, нижний и верхний ограничения на моей XIB? Нужно ли добавлять #import SecondView.xib" in the
.h` файл? кстати?