iPad: SplitViewController с навигацией - PullRequest
0 голосов
/ 13 декабря 2010

Я следую примеру кода Apple «MultipleDetailViews», но я хочу сделать следующее:

  1. при запуске показывает, что RootViewController (табличное представление) отображает деталь по умолчанию detailViewController (1st detailView)
  2. когда пользователь выбрал ячейку таблицы, вставьте ее в стек, отобразите SubCategoriesVC (представление таблицы) в мастере splitView, но не обновляйте detailView.
  3. в SubCategoriesVC, выбирая таблицуячейка .. обновить detailViewController (2nd detailView)

Итак, в RootViewController.m я нажимаю другую навигацию ...

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    SubCatVC *browseSubCatView = [[SubCatVC alloc] initWithNibName:@"SubCatVC" bundle:nil];
    [self.navigationController pushViewController:browseSubCatView animated:YES];
    [browseSubCatView release];
}

Затем в SubCatVC.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
 UIViewController <SubstitutableDetailViewController> *detailViewController = nil;      
 SecondDetailViewController *newDetailViewController = [[SecondDetailViewController alloc] initWithNibName:@"SecondDetailViewController" bundle:nil];
    detailViewController = newDetailViewController;

 // Update the split view controller's view controllers array.
NSArray *viewControllers = [[NSArray alloc] initWithObjects:self.navigationController, detailViewController, nil];
self.splitViewController.viewControllers = viewControllers;
[viewControllers release];

// Dismiss the popover if it's present.
if (self.popoverController != nil) {
    [self.popoverController dismissPopoverAnimated:YES];
}

// Configure the new view controller's popover button (after the view has been displayed and its toolbar/navigation bar has been created).
if (self.rootPopoverButtonItem != nil) {
    [detailViewController showRootPopoverButtonItem:self.rootPopoverButtonItem];
}

  [detailViewController release];
  [[NSNotificationCenter defaultCenter] postNotificationName:@"updateProduct" object:nil];
}

но он не обновил мой detailView .. поэтому я не знаю, что не так?Источник здесь: http://pastebin.com/iy6SqLqt

Надеюсь, кто-нибудь может мне посоветовать.Спасибо

1 Ответ

0 голосов
/ 13 декабря 2010

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

Когда вы помещаете новый rootController в стек навигации, вы должны убедиться, что в нем есть указатель на detailViewController, с которым вы хотите, чтобы он общался. Вы можете проверить его регистрацию делегата, прежде чем пытаться обновить его:

В вашем SubCatVC (или любом другом руте в этом отношении):

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

//do stuff, init alloc vc's....

NSLog(@"DELEGATE: %@",self.delegate);

//push/delegate etc..

}

Если вы найдете его ноль, скопируйте исходный делегат root, или когда вы добавляете новую деталь, сообщите / установите корень, с которым вы хотите связаться.

Если вам нужно больше подробностей, просто спросите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...