我一直在尝试将此示例添加/实现到我现有的Split View应用程序测试中。
我使用替换详细视图或右视图的概念,否则我的应用程序会有所不同。正是这种差异导致了我的问题。
我有一个rootviewcontroller或左视图,在这里选择一些东西时,新视图会被推到这个视图上。在这个“推动视图”中选择某些东西后,我想要更改细节视图或右侧视图。这与apple示例有所不同,其中rootview没有推送视图,因此引用不会被破坏。
以下是我的更改代码 - 正在初始化新的View DVCases,但未执行didload。
问题是与我的课程有关的学习问题。
下面的代码在我的RootViewController实现代码中,但是如果推送了一个新视图,我对splitviewcontroller的引用就不起作用了。
第二个self.navigationcontroller不正确,因为我已将第二个视图推送到rootviewcontroller。
为了集中和简化代码,我所做的是来自didselect事件中被推送视图的委托,我调用在rootviewcontroller中找到的方法,将索引作为参数传递。我的自定义方法的代码包含以下内容。
所以我的问题是如何在我将其他视图推送到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];
如果您有任何提示或帮助,我将不胜感激。
答案 0 :(得分:0)
初始化任何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
将调用此方法而不是任何其他方法(直到此方法调用其他方法)在里面)。
由于
答案 1 :(得分:0)
当我正在学习正确编码时 - 我的问题就在于此。
只要您使用相同的实例调用它,上述代码就是完美的。我不是。因此它没有用。
最后,我将RootViewController作为具有上述代码的方法的委托。因此,当在另一个视图中时 - 此视图可以调用此方法,并且RootViewController的正确或实际实例将实现它。