从多个视图控制器使用自定义 UIView

2024-05-03

我创建了一个自定义 UIView,我想在 iPhone 应用程序中的多个不同视图控制器上使用它。目前,我已从第一个视图控制器的 nib 文件中复制了包含控件的 UIView,将其粘贴到其他视图控制器中,然后将所有操作连接到每个视图控制器。这工作正常,但不是我想要使用此自定义视图的最佳方式。

我的自定义视图相当简单,它由一些带有标签的 UIButton 组成,点击这些按钮会触发更改视图控制器视图上控件内容的操作。

巩固此 UIView 的定义和用法的策略是什么?理想情况下,我只想从视图控制器的笔尖引用此自定义视图,并让我的视图控制器响应此自定义视图中的操作。

编辑:好的,根据 J.Biard 的建议,我尝试了以下方法,但运气不佳。

我创建了另一个基于 UIView 的 nib 文件,其中包含可重用视图和 UIView 子类 .m 和 .h 文件的内容(现在只是一些 UIButton 对象),然后将 nib 文件的所有者类设置为我新创建的类名。

然后,我添加了 J.Biard 的大部分代码(我将 rect 更改为 50,50,100,100,暂时忽略了 setDelegate,因为我现在只是想让它在视觉上工作,我发现 [self. view addSubview:view] 比 [self addSubView:view]) 工作得更好,直到应用程序启动时显示的第一个视图控制器的 viewDidLoad 方法结束。

我现在得到的是我的主视图,里面有一个黑色方块。我是否错过了某个地方的出口,或者 UIView 子类中的 initWithFrame 或 drawRect 中是否需要一些初始化?


创建 MyCustomView 类和 nib 文件。

在 nib 文件中,将 Files Owner 设置为 MyCustomView - 然后使用顶级 UIView 正常设计视图。在 MyCustomView 中创建 IBOutlet 以链接到 nib 文件中的顶级 UIView。

在 MyCustomView 中添加此方法:

- (BOOL) loadMyNibFile {
if (![[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:self options:nil]) {
    return NO;
}
return YES;
}

在您的视图控制器中,您可以像这样使用这个自定义视图

- (void)viewDidLoad {

MyCustomView *customView = [[MyCustomView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
[customView loadMyNibFile];
[self.view addSubview:customView.view]; //customView.view is the IBOutlet you created
    [customView release];

}

如果您愿意,还可以在 MyCustomView 上创建一个便利的类方法来执行此操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从多个视图控制器使用自定义 UIView 的相关文章

  • 如何将nsmutable数组添加到sqlite数据库表中

    如何将nsmutablearray添加到sqlite数据库表中 有人可以帮我编码吗 您可以使用 for int i 0 i lt mutArray count i NSString string mutArray objectAtIndex
  • 从应用程序内发送电子邮件中的图像和文本

    如何从我的应用程序内通过电子邮件发送图像和文本 表格数据形式 请大家帮忙并提出建议 谢谢 void sendMailWithImage UIImage image if MFMailComposeViewController canSend
  • UIKit SDK 3.0错误

    我正在使用 iphone sdk 3 0 beta 5 9m2735 SDK 当我尝试使用模拟器 3 0 选项编译代码时 出现以下错误 该代码针对其余所有模拟器选项进行编译 即 2 0 2 1 2 2 2 2 1 编译我的代码时出现以下错误
  • UIView 子类中使用的 CAShapeLayer 不起作用

    我尝试了几个小时 用 CAShapeLayer 在 UIView 周围获得虚线边框 但我没有显示它 ScaleOverlay h import
  • 如何对 iPad 应用程序进行类转储?

    我正在尝试运行 iPad 应用程序的类转储来探索其架构 我使用 The Unarchiver 提取了 ipa 文件 并从 Payload 文件夹中对 app 文件运行了 class dump 但是 我收到此错误 Generated by c
  • 如何同时关闭并弹出到视图控制器

    我的家庭视图控制器是Tabbarcontroller 从选项卡栏我导航到 A Viewcontroller TabarViewcontroller gt A 视图控制器 从A 视图控制器 我推 B 视图控制器 从B Viewcontroll
  • Objective c:如何只删除目录下的所有文件但保留目录本身

    我发现下面的代码可以删除objective c中的文件 但我只想删除目录下的所有文件Caches并保留目录Caches itself 有人可以建议这样做的方法吗 Thanks NSFileManager filemgr filemgr NS
  • iPhone Core Graphics 子视图的粗虚线

    我有一个UIView在其中我通过覆盖使用 Core Graphics 画了一条线drawRect 该视图还包含一个子视图 该子视图也绘制一条线 然而 虽然两个视图都使用几乎相同的代码 至少出于测试目的 但在它们上绘制的线看起来并不相同 正如
  • 如何改进 iOS 中的 TWTweetComposeViewController 代码?

    我已经实现了以下代码来进行 Twitter 共享 在我的代码中 我尝试测试 iOS 5 如果这不起作用 我会回到使用 ShareKit 的 Twitter 代码进行共享的旧方式 我向同事展示了代码 他建议我的代码可能有缺陷 我需要做两件事
  • iPhone - 创建图像网格列表

    我正在开发一个应用程序 它从网站获取图像并使用网格视图向用户显示 例如Apple的照片应用程序 当您点击图像时 我会推送一个显示图像信息和其他内容的视图控制器 实现这个的更好方法是什么 我想到了自定义 UITableViewCell 我见过
  • 为什么单个 Vec4 乘法会大大减慢我的 ogl es 2 片段着色器的速度?

    我正在为 iOS 设备编写 2D OpenGL 游戏 现在 我正在研究 iPad 第一代 上的性能 该游戏有 ogl 1 1 和 2 0 的代码路径 我可以通过 define 使用 ogl 2 0 时 分析器告诉我 我的渲染器利用率 相当稳
  • Facebook oauth/access_token 丢失

    不知道我是否错过了什么 但就这样 我正在尝试为我的应用程序获取 access token 以便它可以在 facebook 上查找某些公共群组的事件 而无需用户登录 我试图从中获取 access token 这将返回一个字符串 access
  • 从 Plist 中存储和检索 [重复]

    这个问题在这里已经有答案了 可能的重复 iOS 在 plist 文件中存储两个 NSMutableArray https stackoverflow com questions 6070568 ios store two nsmutable
  • iPhone,使用 isKindOfClass 是否被认为是不好的做法?

    例如 如果有一个 处理所有 类型的方法 if obj isKindOfClass class1 else if obj isKindOfClass class2 etc 这是不好的做法吗 是否有更简洁的替代方案或更好的方法来构建代码 在运行
  • 自动调整大小完成后如何获取帧大小

    我想知道 如何以及何时 viewDidLoad viewWillAppear viewDidAppear 可以获得自动调整大小以适合其父视图的 UIViews 框架大小 从你的问题中不清楚你为什么想要它 但我想这是为了布局你的子视图 幸运的
  • iPhone 上的最大蓝牙连接数是多少?

    如果您对此有任何见解 那么了解连接之间是否存在很大的延迟也会很高兴 蓝牙协议规定连接是点对点的 因此称为 配对 但不同的站可以同时使用不同的配置文件 每个配置文件一次仅支持一个连接 您可以同时与汽车建立立体声耳机连接并与笔记本电脑建立数据连
  • 如何等待 webViewDidFinishLoad 完成

    我有一个初始化 webView 的布尔条件 并在 webViewDidFinishLoad 中加载另一个委托 以便在完成完成后触发 但是 由于布尔值在条件 webViewDidFinishLoad 之前返回 因此页面永远不会完全加载 如何确
  • 维护 UISegmentedControl 中的选择

    我可以保持 UISegmentViewControl 段的选定状态吗 即 即使用户选择了另一个段 也可以保持一个段显示为选中状态 我似乎在任何地方都找不到任何可以做到这一点的东西 这是不可能开箱即用的 看如何才能选择 UISegmented
  • Monotouch 和本机 iOS 代码

    是否可以将使用 monotouch 编译的 C 库与单个应用程序中的 Objective C 前端链接起来 或者该应用程序必须是全部还是全无 这是可能的 但您不会从 MonoTouch 工具获得任何帮助 并且您无法摆脱这样一个事实 您仍然需
  • 增加 NSData 的长度

    基本上 我有一个 46 个字符的 NSString 我将其转换为 NSData 我需要将字符串填充到 48 个字符 仅在 NSString 末尾添加 是行不通的 所以 我只是使用以下方法增加了 NSData 的长度 NSString str

随机推荐

  • 我可以采取什么方法使用 Web 技术开发桌面应用程序

    我想知道是否有任何方法可以创建一个作为桌面应用程序启动的应用程序 供个人使用 由于桌面应用程序可以使用我的 HDD 文件 我可能想要管理这些文件 但觉得将它们扔到网络服务器上并不安全 但我认为我将来可能想做的是将应用程序移植到网络上 因为我
  • WPF 数据绑定和级联转换器?

    我想知道使用 wpf 数据绑定时是否可以级联转换器 例如就像是
  • 预编译 Rails 5 以包含所有资源

    我正在尝试预编译所有资产以进行生产 当我跑步时RAILS ENV production bundle exec rake assets precompile并非我的所有资源都经过预编译 我尝试过使用其他人在其他类似问题中建议的方法 但它们对
  • 如何从主体上的 onClick 事件获取鼠标单击的绝对位置?

    我试图获取鼠标单击相对于浏览器 主体的绝对位置 顶部和左侧 not主体内的任何父元素 我有一个绑定到 body 的侦听器 但 e pageX 和 e pageY 为我提供了相对于 div 的位置 请注意 我可以利用 jQuery 和 YUI
  • 通过 Instagram API 访问公共 Instagram 内容,且 accesstoken 不会过期

    我想显示来自 Instagram 的与特定主题标签相关的公共内容 一切正常 但我无法更新access token每次过期的时候 不要假设您的 access token 永远有效 https www instagram com develop
  • ASP.NET中如何获取当前域名

    我想在asp net c 中获取当前域名 我正在使用这段代码 string DomainName HttpContext Current Request Url Host 我的网址是localhost 5858但它只返回localhost
  • ggplot geom_hline 中无法识别数据列

    我想知道为什么变量mean y不被我识别geom hline yintercept unique mean y call library tidyverse set seed 20 n groups lt 2 n in group lt 2
  • 为什么我们在Java中使用接口引用类型? [复制]

    这个问题在这里已经有答案了 我即将参加第一门面向对象编程课程的期末考试 但我仍然不明白多态性的概念 假设我有一个抽象类 Vehicle 该类有一个名为 Aircraft 的子类 我的问题是 这两个代码有什么不同 Aircraft Jetpl
  • Android SDK 中缺少 Gradle(使用 cordova + ionic)

    是的 我搜索了这个 但没有搜索到任何内容 只是有关 ANDROID HOME 路径的信息 但就我而言 我认为这不是真正的问题 当我尝试做的时候ionic build android我收到这个错误 错误 在 android sdk 中找不到
  • c# 错误:无法识别的配置部分 userSettings - 停止程序读取 user.config?

    在我的 C 表单应用程序 在 VS2010 中使用 NET 4 0 创建 中 我使用应用程序设置来存储输出路径 以前此设置是使用用户范围配置的 但我必须将其范围更改为应用程序 执行此操作后 我现在在表单启动时收到无法识别的配置部分 user
  • iOS:如何创建并绘制(并保存)大于屏幕的图像?

    我们正在创建一个 iOS 照片应用程序 为此 我们必须创建动态大小的图像 最大约为 2500x1600 像素 创建此图像后 我们希望以相当快的速度在大图像之上绘制较小的图像 正如我们所看到的 问题在于不可能获得大于屏幕分辨率的上下文 该调用
  • 如何将“从文件夹打开网站”转换为基于 csproj 的“ASP.NET Web 应用程序”项目

    标题几乎说明了一切 我有一个已构建并签入 vss 的 网站 要打开它 我们将文件 gt 打开 gt 网站 然后选择文件夹 这种技术可以让您获得一个项目 但没有 cs vb proj 文件 有没有简单的方法可以将其转换为 ASP NET We
  • Python lambda 函数没有在 for 循环中正确调用[重复]

    这个问题在这里已经有答案了 我正在尝试使用 Python 中的 Tkinter 制作一个计算器 我使用 for 循环来绘制按钮 并且尝试使用 lambda 函数 以便仅在按下按钮时调用按钮的操作 而不是在程序启动时立即调用 然而 当我尝试这
  • 使用 Spring boot CrudRepository 过滤数据

    我有一个简单的 REST 服务 可以使用 Spring boot 访问数据CrudRepository 该存储库已经实现了分页和排序功能 如下所示 public interface FlightRepository extends Crud
  • 无需 JavaScript 的图像翻转

    我试图找到一种不使用 javascript 的方法 该方法允许您将鼠标悬停在较小的 div 或图像 上来更改较大 div 的背景 纯粹使用 HTML 和 CSS 可以吗 该示例有 2 个问题 1 仅滚动其中一个 div 有效 因为它紧随其后
  • 什么时候汇编比C更快? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的
  • 我需要帮助理解 java 中 Timer 类的 ScheduleAtFixedRate 方法

    作为一个粉丝番茄工作法 http www pomodorotechnique com 我正在为自己制作一个倒计时器 以保证我完成作业 然而 这个特定的项目不是家庭作业 Stack 有很多关于使用计时器来控制用户输入之前的延迟等问题 但关于独
  • InnoSetup:不卸载更改的文件

    如何告诉 InnoSetup 不要卸载已被用户更改的 文本 文件 与 InnoSetup 安装的文件不同 或者可能更困难 在现有版本上安装新版本时 InnoSetup 应该询问用户是否覆盖更改的文件 但在纯粹卸载时 它应该在不询问的情况下卸
  • 在 Android Kotlin 项目上使用 Java 11 库

    我有以下使用 Java 11 的 HttpClient 编写的 POST 请求 但 Android Studio 无法识别这些库 import java net URI import java net http HttpClient imp
  • 从多个视图控制器使用自定义 UIView

    我创建了一个自定义 UIView 我想在 iPhone 应用程序中的多个不同视图控制器上使用它 目前 我已从第一个视图控制器的 nib 文件中复制了包含控件的 UIView 将其粘贴到其他视图控制器中 然后将所有操作连接到每个视图控制器 这