#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 ната же страница.