将另一个 UIViewController 的视图放在“主”UIViewController 中——委托方法

Posted

技术标签:

【中文标题】将另一个 UIViewController 的视图放在“主”UIViewController 中——委托方法【英文标题】:Putting another UIViewController's view within a "main" UIViewController -- delegate methods 【发布时间】:2012-02-10 23:01:09 【问题描述】:

我正在尝试制作一个与 iPhone 上的 iCal 应用程序非常相似的应用程序。

为此,我还集成了 2 个开源项目 Kal (https://github.com/klazuka/Kal) 和 GuiCocoa/Calendar (https://github.com/guicocoa/calendar)作为我自己编码的“列表”视图片段。

我决定,因为我需要嵌套在 UINavigationController 堆栈中的所有内容,所以将这 3 个单独的项目实现为一种事物的最佳方法是,我将创建类似于 UITabBarController 的东西(其中你有 1 个 UIViewController 类,其中存储并嵌套其他 UIViewControllers - 但是,我想使用带有 UISegmentedControl 的自定义 UIToolbar 在不同的视图控制器之间进行委托)。

所以我遇到的最重要的问题是行动的错误授权。例如:

如果我要单击其中一个网格日期,则会返回错误:

-[UINavigationButton didSelectDate:]: unrecognized selector sent to instance 0x6c1aba0 或类似的东西。

也许我的问题应该是:是否有一个 UITabBarController 的“子类”,我可以实现自己的 UIToolbar,而不是官方的 UITabBar 等?

如果没有,有没有办法指定“子视图”中的所有点击都被委派给子视图内的函数?

谢谢, rnc505

【问题讨论】:

【参考方案1】:

首先你可以继承一个 UIToolBar 来自定义它。

#import <Foundation/Foundation.h>

@interface CustomToolBar : UIToolbar




@end


#import "CustomToolBar.h"

@implementation CustomToolBar

@end

而不是调用:

UIToolbar *toolbar = [[UIToolBar alloc] init];

你打电话

CustomToolbar *toolbar = [[CustomToolbar alloc] init]

您的另一个选择是根据需要更改按钮的委托。

【讨论】:

以上是关于将另一个 UIViewController 的视图放在“主”UIViewController 中——委托方法的主要内容,如果未能解决你的问题,请参考以下文章

父 UIViewController 调整容器视图大小时,子视图控制器不自动布局

将另一个视图控制器推送到 UITabBarController 视图中

将另一个视图附加到同一“文件所有者”

以编程方式将另一个视图控制器与按钮连接起来

UIView 和 -setBounds 问题

如何将另一个 ViewController 设置为 AlertView 的委托