2012-02-28 3 views
1

Раньше я сгенерировал программу с помощью кода, и у меня есть суперкласс, у которого есть фоновое изображение все время. Но теперь я меняю свое кодирование на использование XIB, как я могу вставить представление после загрузки Nib? Но я не хочу, чтобы все мои XIB имели представление. Благодарю.Как добавить представление после загрузки ниба?

ответ

1

awakeFromNib - это правильный способ использования. Вы не хотите скрывать представления, просто добавляя subview. Вместо этого добавьте подвью.

- (void)awakeFromNib 
{ 
    UIView *targetView; 
    UIView *viewToInsert = [self pointerToViewToInsert]; 

    for (UIView *aSubview in self.view.subviews){ 
     if ([aSubview isEqual:self.someView]){ 
      targetView = aSubview; 
      break; 
     } 
    } 
    if (targetView){ 
     int targetIndex = [self.view.subviews indexOfObject:targetView]; 
     [self.view insertSubview:viewToInsert atIndex:targetIndex]; 
} 
+0

Рад узнать, что * кто-то может ему помочь – QED

+0

Цикл for может быть опущен в большинстве случаев. Поместите его туда, чтобы показать, как получить индекс подвью, соответствующий определенным критериям. – Thomas

2
-(void)awakeFromNib { 
    [view addSubview:newView]; 
} 
+0

Выполняется после загрузки XIB, но я хотел бы иметь что-то перед загрузкой XIB. Например, у меня есть кнопка. В awakeFromNib, я использую добавить метку, ярлык находится поверх кнопки, но я хочу, чтобы метка находилась под кнопкой. – DNB5brims

+2

В этом вопросе задается вопрос о том, как вставить представление после загрузки NIB. Вы не можете добавить subview в представление, которое еще не загружено. – QED

+0

Вы можете просто добавить элементы в другом порядке @TedWong. Добавьте метку, затем кнопку. Whala, они в том порядке, в котором вы хотите. – sasquatch