Как я могу перевести быстрое NSLayoutConstraint activConstraints в цель c? - PullRequest
0 голосов
/ 07 октября 2019

Я успешно создал проект в swift, где я нажимаю кнопки на моем viewController, чтобы загрузить другие viewControllers или xib файлы в контейнер. Просто чтобы дать вам представление:

enter image description here

Это прекрасно работает, но мне трудно перевести его на 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` файл? кстати?

1 Ответ

1 голос
/ 07 октября 2019

Можно попробовать

UINib *nib = [UINib nibWithNibName:@"SecondView" bundle:nil]; 
UIView *sub3 = [nib instantiateWithOwner:self options:nil][0]; 
[containerOutlet addSubview:sub3];


[NSLayoutConstraint activateConstraints:@[
   [sub3.leadingAnchor constraintEqualToAnchor:scontainerOutlet.leadingAnchor],
   [sub3.trailingAnchor constraintEqualToAnchor:containerOutlet.trailingAnchor],
   [sub3.topAnchor constraintEqualToAnchor:containerOutlet.topAnchor],
   [sub3.bottomAnchor constraintEqualToAnchor:containerOutlet.bottomAnchor]
]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...