Mar*_*ark 3 cocoa-touch objective-c ipad uisplitviewcontroller
我有一个应用程序将导航到UISplitView(完全在另一个视图内),如下所示:
- (void) switchToMyDayView {
NSLog(@"Show My Day Screen");
if (self.myDayController.view.superview == nil) {
if (self.myDayController == nil) {
MyDayController *myController = [[MyDayController alloc] initWithNibName:@"MyDay" bundle:nil];
self.myDayController = myController;
[myController release];
}
[homeScreenController.view removeFromSuperview];
[self.view insertSubview:self.myDayController.view atIndex:0];
}
}
Run Code Online (Sandbox Code Playgroud)
这是在主导航屏幕上完成的
现在,MyDayController有一个名为MyDay.xib的XIB,它包含以下项目:
文件所有者:MyDayController
第一响应者:UIResponder
拆分视图控制器
Run Code Online (Sandbox Code Playgroud)---->Navigation Controller ---->Navigation Bar ----> Table View Controller ----> Navigation Item ---->View Controller
所以,我需要一些更多的组件,我需要一个UITableViewController和一个UISplitViewControllerDelegate正确吗?
我打算在我的MyDayController中实现这些协议,这种标准是什么?
所以,在上面的代码之后,我收到一个错误:
- [UIViewController _loadViewFromNibNamed:bundle:]加载了"MyDay"笔尖,但未设置视图插座.
那么,如何使用UISplitViewController修复它?我知道UISplitViewController有一个view属性,但我不能用它/在IB中连接它可以吗?
非常感谢
标记
您不应该继承UISplitViewController的子类.您的"MyDayController"课程中有什么行为?UISplitViewController基本上只是处理为您布置主视图和详细视图,因此您的责任是实现这些控制器.
如果拆分视图位于应用程序的顶层,则可以将其添加到应用程序的主窗口笔尖.如果不是,只需以编程方式创建它:
- (void) switchToMyDayView {
NSLog(@"Show My Day Screen");
if (self.myDayController == nil) {
YourMasterViewController *masterViewController = [[YourMasterViewController alloc] initWithNibName:@"MasterView" bundle:nil];
YourDetailViewController *detailViewController = [[YourDetailViewController alloc] initWithNibName:@"DetailView" bundle:nil];
UISplitViewController *myController = [[UISplitViewController alloc] init;
myController.viewControllers = [NSArray arrayWithObjects:masterViewController, detailViewController, nil];
[masterViewController release];
[detailViewController release];
self.myDayController = myController;
[myController release];
}
[homeScreenController.view removeFromSuperview];
[self.view insertSubview:self.myDayController.view atIndex:0];
}
Run Code Online (Sandbox Code Playgroud)
您也不需要进行测试,self.myDayController.view.superview == nil因为它隐含在内self.myDayController == nil
| 归档时间: |
|
| 查看次数: |
2648 次 |
| 最近记录: |