Если вам нужен такой уровень контроля, вы на самом деле не хотите использовать IB. Потому что, как вы заметили, если удалить представление, а затем воссоздать его, вам все равно придется делать это в коде. Просто спроектируйте большинство представлений в IB, а затем напишите некоторый код, который генерирует именно это представление. Затем вы можете снова вызвать этот же метод позже, чтобы воссоздать это представление, когда оно вам понадобится.
Возможно, вы сможете заархивировать его, а затем превратить его обратно в объект, но это похоже на несоответствующее решение. IB не позволяет динамически создавать элементы управления во время выполнения, даже если они раньше существовали, но больше не делают. Нет ничего постыдного в том, чтобы оставить IB из цикла для этого. На самом деле это, вероятно, хорошая идея.
OR
Если это сложное представление с множеством частей, поместите представление в его собственное перо и создайте для него контроллер представления. Затем вы можете просто установить контроллер представления с именем пера и добавить представление контроллеров в качестве подпредставления к вашему основному представлению. Затем ваш контроллер вида обрабатывает загрузку пера, и вы можете создать его в IB. Ничто не говорит о том, что представление контроллера представления также должно занимать весь экран.
self.otherController = [[OtherController alloc] initWithNibName:@"Other" bundle:nil];
[self.view addSubview:otherController.view];