gpt4 book ai didi

objective-c - 如何手动创建 UISplitView?

转载 作者:搜寻专家 更新时间:2023-10-30 20:01:54 26 4
gpt4 key购买 nike

我有一个应用程序将导航到 UISplitView(完全在另一个 View 内),如下所示:

- (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];
}
}

这是在主导航屏幕上完成的

现在,MyDayController 有一个名为 MyDay.xib 的 XIB,其中包含以下项目:

File's Owner: MyDayController

First Responder: UIResponder

Split View Controller

 ---->Navigation Controller

---->Navigation Bar

----> Table View Controller

----> Navigation Item

---->View Controller

那么,我需要更多的组件,我需要一个 UITableViewController 和一个 UISplitViewControllerDelegate 对吗?

我打算在我的 MyDayController 中实现这些协议(protocol),这是一种标准吗?

所以,在上面的代码之后,我得到一个错误:

-[UIViewController _loadViewFromNibNamed:bundle:] 加载了“MyDay” Nib ,但未设置 View socket 。

那么,如何使用 UISplitViewController 修复它?我知道 UISplitViewController 有一个 View 属性,但我不能在 IB 中使用它/连接它,可以吗?

非常感谢

标记

最佳答案

您不必继承 UISplitViewController。您的“MyDayController”类中有什么行为? UISplitViewController 基本上只是为您处理主视图和详细 View 的布局,因此您的责任是实现这些 Controller 。

如果 Split View位于应用的顶层,您可以将其添加到应用的主窗口 Nib 。如果不是,只需以编程方式创建它:

- (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];
}

您也不需要测试 self.myDayController.view.superview == nil 因为它隐含在 self.myDayController == nil

关于objective-c - 如何手动创建 UISplitView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2854840/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com