gpt4 book ai didi

objective-c - 如何在 objective-c 中实现多个 Controller

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

首先,我不知道“ Controller ”这个词是否合适。我想要实现的是这个。

   @interface ClubViewController : CoreDataTableViewController :NRGridViewController
{

我知道这在 Objective-C 中是不可能的。但是有办法解决这个问题吗?因为我想使用 CoreDateTableViewController 和 NRGridViewController。

亲切的问候

史蒂夫编辑

这就是我的 Storyboard层次结构的样子。

-ViewController
-TableView
-View
-TableViewCell

所以我有一个 tableview Controller,但是在这个 tableview controller 上方你会发现一个带有三个按钮的小 View 。当我按下按钮 1 时,我想拿走 tableview 并使用 NRGridview Controller 绘制一个 gridView。但是当我按下按钮 2 和 3 时,我使用 CoreDataTableViewController 填充了我的表格 View 。

我希望这能更多地解释我的问题。

最佳答案

我认为一种方法是使用一个容器 View ,其中包含一个容器 View Controller 。该容器 Controller 将有 2 个子 Controller ,它们是您的 CoreDateTableViewController 和 NRGridViewController。我已经实现了类似的东西,如果您有兴趣,我可以向您展示一些代码。

编辑后:在测试应用程序中,我从一个单一的 View 模板和一个 Storyboard开始。我在 View 的顶部添加了两个按钮,在 View 的下半部分添加了一个容器 View (第一个 Controller 属于 ViewController 类)。然后我拖出一个新的 View Controller ,并将控件从容器 View 拖到新 Controller 并选择“嵌入 segue”(这会将 View 调整为与容器 View 相同的大小)。这个 Controller 的类被更改为我的子类,ContainerController。然后,我为将由容器 Controller 管理的 2 个 View 再创建 2 个 Controller ( View 需要在 IB 中将其大小设置为“自由格式”,以便您可以将大小设置为与容器 View 相同)。这是 ContainerController 中的代码:

- (void)viewDidLoad
{
[super viewDidLoad];
self.cont1 = [[FirstController alloc]initWithNibName:@"FirstView" bundle:nil];
self.cont2 = [[SecondController alloc]initWithNibName:@"SecondController" bundle:nil];
[self addChildViewController:self.cont1];
self.currentController = self.cont1;
[self.view addSubview:self.cont1.view];
}

-(void)switchToFirst {
if (self.currentController != self.cont1) {
[self addChildViewController:self.cont1];
[self moveToNewController:self.cont1];
}
}

-(void)switchToSecond {
if (self.currentController != self.cont2) {
[self addChildViewController:self.cont2];
[self moveToNewController:self.cont2];
}
}

-(void)moveToNewController:(id) newController {
[self.currentController willMoveToParentViewController:nil];
[self transitionFromViewController:self.currentController toViewController:newController duration:.6 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{}
completion:^(BOOL finished) {
[self.currentController removeFromParentViewController];
[newController didMoveToParentViewController:self];
self.currentController = newController;
}];
}

我在 ViewController 中拥有的唯一代码是用于切换 View 的 2 个按钮的 IBAction。这些方法只是调用容器 Controller 中的方法:

-(IBAction)chooseFirstController:(id)sender {
[self.childViewControllers.lastObject switchToFirst];
}

-(IBAction)chooseSecondController:(id)sender {
[self.childViewControllers.lastObject switchToSecond];
}

关于objective-c - 如何在 objective-c 中实现多个 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12841635/

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