Реализация 2 xib в одном представлении

#objective-c #ipad

#objective-c #iPad

Вопрос:

В моем приложении для iPad я хочу реализовать 2 xib-файла в одном представлении. Это должно выглядеть как разделенный вид, но я не хочу использовать разделенный вид. Как это можно сделать.

Ответ №1:

 NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"FooView" 
                                           owner:self options:nil];
[self.view addSubview:[array objectAtIndex:0]];
  

В большинстве случаев вам, вероятно, понадобится первый (единственный?) объект верхнего уровня в XIB, но могут быть случаи, когда вы захотите ссылаться на разные вещи в XIB.

Классическим примером этого является способ загрузки UITableViewCells. Небольшое изменение здесь заключается в настройке и использовании выхода и загрузке первого элемента в XIB прямо в выход.

 [[[NSBundle mainBundle] loadNibNamed:@"FubarView" owner:self options: nil] objectAtIndex:0];
[self.view addSubview:self.fubarViewOutlet];
  

Какой бы способ вы ни выбрали для этого, после добавления его в родительское представление просто задайте для фрейма размер и местоположение. Либо используйте выход, либо приведите элемент из массива в качестве соответствующего класса и используйте его так же, как и другое представление.

Редактировать: из вашего запроса на комментарий я бы написал что-то вроде этого.

 - (void)tableView:(UITableView *)tableViewTemp didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
  if(indexPath.row==0){ 
    NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"CNBViewController" 
                                       owner:self options:nil];
    self.selectedRowView = [array objectAtIndex:0];  // assumes a class variable selectedRowView
    [self.view selectedRowView];
    // newView.frame = CGRectMake(........);
  }
}
  

Комментарии:

1. Я пытаюсь использовать этот код, но я не знаю, как установить это в моем приложении. не могли бы вы мне помочь? Я имею в виду, что в первой половине экрана ipad я хочу, чтобы табличный вид и его didselectObjectAtIndex: 0 я хочу, чтобы подробный вид отображался в следующей половине.

2. Для этого я бы предложил создать UIViewController с XIB (просто установите флажок при создании UIViewController). Затем перейдите в XIB и создайте свою таблицу, которая, возможно, занимает половину экрана. Оттуда добавьте свой делегат UITableView / источник данных. В didSelectRowAtIndexPath: вставьте код, который загружает второй XIB. Выполните addSubview: для добавления вновь загруженного представления (из второго XIB) в основной XIB. Обязательно установите рамку нового XIB, поскольку размер может быть 0,0 (поэтому вы не сможете его увидеть)

3. Это код, который я использовал, но он полностью переводит меня на другую страницу — (void)TableView:(UITableView *)tableViewTemp didSelectRowAtIndexPath:(NSIndexPath *)indexPath { if(indexPath.row==0){ self.title=@»Создать новую брошюру»; CNBViewController * xib1= [[CNBViewController alloc]initWithNibName: @»CNBViewController» bundle: nil]; //[self.view removeFromSuperview]; [self.NavigationController pushViewController: xib1 анимированный: ДА]; [xib1 release]; } Можете ли вы помочь мне с кодом, с помощью которого я могу загрузить другой xib ната же страница.