Пара проблем, связанных с настройкой примера Appleles MultipleDetailViews - PullRequest
0 голосов
/ 15 апреля 2011

Я пытался добавить / внедрить этот пример в существующие тесты приложения Split View.

Пример Apple

Мне нужно использовать концепцию замены детального или правого вида, иначе мое приложение будет другим. Именно эта разница вызывает у меня проблемы.

У меня есть rootviewcontroller или левый вид, и при выборе чего-то здесь новый вид помещается в этот вид. При выборе чего-либо в этом «толкаемом виде» я хочу изменить детальный вид или правый вид. В этом отличие от примера с яблоками, где корневое представление не имеет выдвинутого представления и, следовательно, ссылки не нарушены.

Ниже приведен мой код изменения - инициализируется новый View DVCases, но загрузка не происходит.

Проблемы связаны с моими занятиями.

  1. Этот код ниже находится в моем коде реализации RootViewController, но моя ссылка на splitviewcontroller не работает, если выдвигается новое представление.

  2. Второй self.navigationcontroller не корректен, потому что я выдвинул второе представление к rootviewcontroller.

Чтобы централизовать и упростить код, то, что я сделал, это от делегата push-представления в событии didselect, я вызываю метод, найденный в контроллере rootview, передавая индекс в качестве параметра. Код для моего пользовательского метода содержит то, что ниже.

Так что мой вопрос в том, как мне сделать это в моей ситуации, когда я перенес другие виды в корневое представление или левую сторону. Похоже, что после нажатия на представление ссылка на splitviewcontroller пропала, и self.navigationcontroller также пропал / или неверен.

UIViewController <SubstitutableDetailViewController> *detailViewController = nil;

if (value == 0) {
    DVCases *newDetailViewController = [[DVCases alloc] initWithNibName:@"DVCases" bundle:nil];
    detailViewController = newDetailViewController;
}

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

// Dismiss the popover if it's present.
if (popoverController != nil) {
    [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 (rootPopoverButtonItem != nil) {
    [detailViewController showRootPopoverButtonItem:self.rootPopoverButtonItem];
}

[detailViewController release];

Буду признателен за любые советы или помощь.

Ответы [ 2 ]

0 голосов
/ 18 апреля 2011

Поскольку я учусь правильно кодировать, мои проблемы сводятся к этому.

Приведенный выше код идеален, если вы вызываете его, используя один и тот же экземпляр. Я не был. Таким образом, это не работало.

В конце я сделал мой RootViewController делегатом для метода, который имеет приведенный выше код. Таким образом, когда в другом представлении - это представление может вызывать этот метод, и правильный или реальный экземпляр RootViewController будет реализовывать его.

0 голосов
/ 15 апреля 2011

Инициализация любого класса viewcontroller не означает, что он вызовет метод viewDidLoad.

viewDidLoad метод будет вызываться только при загрузке представления этого viewController. Обычно мы делаем это либо следующими способами.

1. Pushing it on navigation stack.
2. Presenting it using modal transition.
3. Adding it on some other view using [someView addSubView:controller.view];
4. Selecting any tabBar item for the first time Or tapping tabBar Item twice.
there may be some other scenarios.

Но сейчас в вашем коде я не вижу ни одного этого элемента.

Инициализация означает, что вы вызываете прямой метод для инициализации (вызывая его конструктор), как здесь, в коде выше initWithNibName будет вызывать этот метод DVClass, а не какой-либо другой (пока этот метод не вызовет другие методы внутри него).

Спасибо

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