2013-03-30 3 views
0

Я создаю версию приложения Master Detail с iPad, используя XCode 4.5 с ARC. У меня есть мой iPadMaster.h/.m (как мой мастер) и iPadDetailViewController.h/m (как моя деталь).Основные сведения о приложении для iPad

Я пытаюсь загрузить различные контроллеры представлений из iPadDetailViewController, когда пользователи щелкают/выбирают строки на iPadMaster.

Я поставил это на iPadMaster.m по адресу:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    iPadDetailViewController * DVC = [[iPadDetailViewController alloc]initWithNibName:nil bundle:nil]; 
    DVC.itemNumber = indexPath.row; 
} 

и попробовал этот дурацкий трюк на iPadDetailViewController.m на [viewDidLoad]:

switch(_itemNumber) 
    { 

     case 0: 
     { 
      //Detail row 
      vc1 *viewController = [[vc1 alloc] init]; 
      [self presentViewController:viewController animated:YES completion:nil]; 
      break; 
     } 
     case 1: 
     { 
      //Report row 
      vc2 *viewController = [[vc2 alloc] init]; 
      //viewController.somePassedInData = theDataToPass; 
      [self presentViewController:viewController animated:YES completion:nil]; 
      break; 
     } 
     case 2: 
     { 
      //Report row 
      vc3 *viewController = [[vc3 alloc] init]; 
      //viewController.somePassedInData = theDataToPass; 
      [self presentViewController:viewController animated:YES completion:nil]; 
      break; 
     } 

     ... 
     case 9: 
     { 
      //Report row 
      vc9 *viewController = [[vc9 alloc] init]; 
      //viewController.somePassedInData = theDataToPass; 
      [self presentViewController:viewController animated:YES completion:nil]; 
      break; 
     } 
     default: 
     { 
      break; 
     } 

На iPhone я бы просто штукатурить 'дела переключатель' в - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath, но я потерялся в среде iPad ...

Thanx заранее ...

ответ

1

Контроллер режима разделения имеет свойство, viewControllers. Объект в индексе 1 является контроллером детали. Вы должны просто создать изменчивую копию viewControllers, заменить объект в индексе 1 на новый контроллер и установить этот массив в массивные контроллеры split view.

NextController *next = [[NextController alloc] init..... // or however you get your new controller 
NSMutableArray *mut = [self.splitViewController.viewControllers mutableCopy]; 
[mut replaceObjectAtIndex:1 withObject:next]; 
self.splitViewController.viewControllers = mut; 
+0

Со ссылкой на мой код выше, где я его вставляю? В '[viewDidLoad]'? –

+0

@TeamStar, замените то, что у вас есть в каждом из предложений вашего случая, с кодом, который я предоставил. – rdelmar

+0

Я получаю ошибку в '[mut replaceObjectAtIndex: 1 с: next]; '. В нем говорится: 'no visible @interface для 'NSMutableArray' объявляет' No visible @interface для 'NSMutableArray' объявляет селектор 'replaceObjectAtIndex ...' ' –