UIView 子类有自己的 XIB [重复]

2024-01-06

我创建了一个自定义 UIView 子类,并且不希望在 UIView 子类中的代码中布局 UI。我想使用 xib 来实现这一点。所以我所做的如下。

我创建了一个“ShareView”类,它是 UIView 的子类。我创建了一个 XIB 文件,其文件所有者设置为“ShareView”。然后我链接了我在“ShareView.h”中声明的一些出口。

接下来我有一个 ViewController MainViewController,它将 ShareView 添加为子视图。这段代码:

NSArray *arr = [[NSBundle mainBundle] loadNibNamed:@"ShareView" owner:nil options:nil];
UIView *fv = [[arr objectAtIndex:0] retain];
fv.frame = CGRectMake(0, 0, 320, 407);
[self.view addSubview:fv];

但现在我在 ShareView 中声明的出口上收到 NSUnknownKeyException 错误。

我这样做的原因是因为我想要一个 UIView,在单独的 XIB 文件中拥有自己的逻辑。我在几个地方读到 ViewController 仅用于管理全屏,即不是屏幕的一部分...... 那么我做错了什么?我希望 ShareView 的逻辑位于一个单独的类中,这样我的 MainController 类就不会因 ShareView 的逻辑而变得臃肿(我认为这是解决此问题的选项?)


ThomasM,

我们对于将行为封装在自定义视图中也有类似的想法(例如,带有最小/最大/当前值的伴随标签的滑块,值更改事件也由控件内部处理)。

在我们当前的最佳实践中,我们将在 Interface Builder 中设计 ShareView(ShareView.xib),正如 Eimantas 在他的回答中所描述的那样。然后我们将 ShareView 嵌入到视图层次结构中MainViewController.xib.

我写下了我们如何将自定义视图 Nib 嵌入其他 Nib 中 http://blog.compeople.eu/apps/?p=142在我们的 iOS 开发者博客中。症结在于压倒一切-awakeAfterUsingCoder:在您的自定义视图中,将从 MainViewController.xib 加载的对象替换为从“嵌入式”Nib (ShareView.xib) 加载的对象。

沿着这些思路:

// ShareView.m
- (id) awakeAfterUsingCoder:(NSCoder*)aDecoder {
    BOOL theThingThatGotLoadedWasJustAPlaceholder = ([[self subviews] count] == 0);
    if (theThingThatGotLoadedWasJustAPlaceholder) {
        // load the embedded view from its Nib
        ShareView* theRealThing = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([ShareView class]) owner:nil options:nil] objectAtIndex:0];

        // pass properties through
        theRealThing.frame = self.frame;
        theRealThing.autoresizingMask = self.autoresizingMask;

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

UIView 子类有自己的 XIB [重复] 的相关文章

  • 如何打开定位服务

    当有人第一次拒绝时 如何从实际应用程序重新打开定位服务 我可以选择关闭或打开它 您只能提示他们在屏幕上打开定位服务 如下所示 UIApplication sharedApplication openURL NSURL URLWithStri
  • 如何在 Core Data 中存储图像?

    只是猜测 我创建一个属性并将其类型设置为 二进制 但最终我该如何使用它呢 我猜幕后有一个 NSData 那么该属性实际上采用 NSData 吗 这个问题已经被问过很多次了 答案有点复杂 当涉及二进制数据时 您应该根据要使用的数据的预期大小来
  • iPhone 的电子书框架

    我有一本书想作为 iPhone 应用程序发布 有谁知道我可以使用免费 或便宜 的框架来实现这一目标 换句话说 我想为我的书创建一个独立的 XCODE 项目 其中包含 iPhone 用户将本书作为独立应用程序阅读所需的所有代码 我见过 O R
  • 持久化 UINavigationItem 的 rightBarButtonItem 属性

    这可能是一个愚蠢的问题 但是有可能保持正确的吗 UIBarButtonItem跨由一个管理的多个视图UINavigationController 我的一系列观点通常具有相同的权利UIBarButtonItem 但是当我将新视图推送到我的UI
  • 如何获取CATransition/Animation的结束事件?

    我的代码如下所示 CATransition transition CATransition animation transition duration duration 我希望得到CATransition Animation的结束事件 是否
  • 如何使用 Swift 使用 TouchID?

    Apple 为 iOS 8 的 TouchID 实现提供的文档采用 Objective C 语言 有 Swift 版本吗 Objective C IBAction touchIDAvailable UIButton touchIDAvail
  • Objective-C – 拥有包含 TestFlight SDK 的 TestFlight 配置

    我已按照 TestFlight 的说明复制 发布 配置 我还使用 TestFlight SDK 从我的应用程序获取实时报告 通过这样做 我必须在我的应用程序中包含一些 TestFlight 代码 当然 我不想在我的应用程序的发布版本中包含此
  • insertNewObjectForEntityForName:

    我使用 Xcode xcdatamodel 文件编辑器设置了一个实体 我创建了一个名为 Person 的实体 添加了一些属性 然后生成了一个 m 文件来表示它 一切都很好 现在 当我去编写一行代码时 例如 Person person Per
  • PFQueryTableViewController 错误

    我正在遵循在线教程 使用 Parse 作为后端创建照片共享应用程序 我已经运行了两次教程 两次都从头开始创建应用程序 但在同一位置仍然出现相同的错误 我到处寻找解决方案 但仍然没有运气 我正在使用 PFQueryTableViewContr
  • 如何在 NSTextView 中使用 SPACE 而不是 TAB

    我只知道如何修改 NSTextView 中的制表符宽度 NSMutableParagraphStyle paragraphStyle self defaultParagraphStyle mutableCopy paragraphStyle
  • 从 robovm 项目创建 iOS 静态库(JNI 中的 BAD_ACCESS)

    我有大量的Java代码 只有计算函数 没有UI 我想在iOS中将其重用为静态库 我的方法是使用robovm http www robovm com并按照robovm论坛中两篇文章中描述的非官方方式创建静态库 1 基本方式 https gro
  • Flutter 应用程序在 iOS 平台的 firebase 电话身份验证中崩溃

    我在我的项目中实现了 Firebase Phone auth 在 Android 端 一切正常 但对于 iOS 端 当我尝试从我的端发送验证码时 应用程序崩溃并失去连接 我已在下面提交了我的代码 主程序 dart class MyApp e
  • 在 iOS 应用程序中拨打电话

    我有一些代码尝试在应用程序中进行调用 但它似乎不起作用 UIApplication myApp UIApplication sharedApplication NSString theCall NSString stringWithForm
  • 在 iOS 7 中 viewForHeaderInSection 部分是从 1 开始而不是从 0 开始

    我正在处理UITableView在我的项目中 这个项目是在 Xcode 4 5 中创建的 现在我正在使用 Xcode 5 所以我的问题是何时在 iOS 6 中运行我的项目 viewForHeaderInSection方法部分从 0 开始没问
  • 如何删除 UITableView 中的缩进?

    首先 我对此很陌生 我很可能忘记了一些非常简单的事情 问题 我正在制作一个应用程序 在 a 中显示来自 imgur com 的随机图像tableView 由于某种原因 所有单元格都会缩进少量 如下图所示 我摆弄了许多设置storyboard
  • 将 iPad xib 转换为 iPhone xib

    我看过很多关于将 iPhone xib 转换为 iPad xib 的帖子和教程 但我想反过来做 我能找到的唯一资源是 将 iPad 应用程序转换为 iPhone https stackoverflow com questions 68550
  • 在 Objective-C 中的 Swift 类上调用 NSStringFromClass 返回模块损坏的名称

    我知道这个问题 https stackoverflow com questions 24107658 get a user readable version of the class name in swift in objc nsstri
  • 无法将项目添加到 NSMutableArray ivar

    我的目标是将字符串添加到数组中 并在我调用的方法中执行此操作 在这个方法中 我在数组中得到一个空值 但不知道为什么 我在课程开始时有这样的内容 NSMutableArray listOfEvents 以及我在每个事件上调用的方法 void
  • UIViewController 内的 UIsearchController 使用自动布局

    有没有人成功实施过UIViewController其中包含两个UISearchController searchBar and a UItableView使用自动布局来布局所有内容 我正在尝试实现类似的目标1密码 https itunes
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 在 Activity 中调用第三方库的本机方法两次会导致 Android 应用程序关闭

    我在我的应用程序中集成了两个本机库 so 这些库编译得很好 我也可以将它们加载到我的应用程序中 第一次调用库的本机方法时 它工作正常 但如果我在活动中再次调用相同的方法 应用程序将关闭 我面临的问题与这里提到的完全相同 http grokb
  • racket程序与python程序之间的通信

    我想要球拍程序和Python程序之间的通信 我的球拍代码 lang racket define values sp o i e subprocess f f f hello exe display server i flush output
  • 正确[超级dealloc]

    dealloc 方法中语句的顺序重要吗 是否 super dealloc 需要在方法的顶部吗 有关系吗 也在例如viewDidLoad 应该 super viewDidLoad 位于方法的顶部 It 绝对地很重要 您的操作取决于您使用的是自
  • 根据用户的区域设置和偏好设置日期和时间的格式(以秒为单位)

    我试图根据用户的设置获取格式化的日期 年 月 日 和时间 小时 分钟 秒 字符串 This https groups google com forum topic android developers I35vKNWqLdQAndroid
  • 使用 ruby​​ PaperTrail 具体化版本时出错

    我按照中的说明进行操作https github com paper trail gem paper trail https github com paper trail gem paper trail 在项目 Gemfile 中添加 pap
  • 使用 google_places 进行多个位置搜索(来自 googleway)

    假设我有一个包含多个位置的向量 经度和纬度格式 我想使用 google places 找到最近的地铁站 但是 我总是收到这样的错误 validateGeocodeLocation 位置 中的错误 位置必须是一对纬度和经度坐标的向量 代码如下
  • Boost::asio - 如何中断阻塞的 TCP 服务器线程?

    我正在开发一个多线程应用程序 其中一个线程充当从客户端接收命令的 TCP 服务器 该线程使用 Boost 套接字和接受器来等待客户端连接 接收来自客户端的命令 将命令传递给应用程序的其余部分 然后再次等待 这是代码 void ServerT
  • 动态增加文本框高度? [复制]

    这个问题在这里已经有答案了 可能的重复 自动调整文本区域大小 https stackoverflow com questions 7477 autosizing textarea 大家好 我正在尝试解决一个问题 但毫无进展 我想做的是当用户
  • Restler API框架安装

    我想开始使用 Restler 开发 Rest api 但是 我找不到有关如何安装它的任何详细信息 此外 它似乎在 nginx 服务器上运行 有没有办法在apache上运行这个框架 是否有其他替代方案来构建高质量的 APIS 有关于安装这个框
  • 使用 Ninject 获取对象的实例

    我安装在我的项目上Ninject MVC3 http nuget org List Packages Ninject MVC3通过努吉特 I read 本文 http azolotar blog com 2011 02 17 ninject
  • 如何使用 valgrind 启动 Android 应用程序

    上周我一直在寻找这个问题的答案 如何使用 valgrind 启动 Android 应用程序 我知道我可以使用 am 命令启动应用程序 但它会启动应用程序并退出 我正在编写一个使用 NDK 执行本机 C 代码的应用程序 我需要检查它是否存在可
  • 如何使用Odin解压、修改、打包和烧写`system.img.ext4`文件?

    我有一个system img ext4 lz4与我的三星 S10 5G 高通 设备兼容的文件 我已经提取了system img ext4文件来自system img ext4 lz4 using unlz4 system img ext4
  • javascript 承诺的正确术语是什么

    我对周围的不同术语感到困惑 根据我的理解 承诺可以是 实现了 rejected pending settled resolved defer 解决了就是解决了吗 还是说已经实现了呢 延迟到底是什么 术语可能很难 让我们从承诺 A 规范 ht
  • 如何对字典中相同键的值求和?

    假设我的字典 mydict red 6 blue 5 red 12 这是我到目前为止所做的 for key value in mydict if key mydict keys key value value else print key
  • Py3k 通过返回迭代器而不是列表来节省内存

    许多过去在 Python 2 x 中返回列表的方法现在似乎在 Py3k 中返回迭代器 迭代器也是生成器表达式吗 懒评价 因此 Python 的内存占用将大大减少 不是吗 使用内置脚本从 2 转换为 3 的程序又如何呢 为了兼容性 内置工具是
  • 属性或获取/设置方法对对象大小的影响

    就对象大小而言 如果公开的属性不表示状态而只是将其 getter 和 setter 调用委托给另一个实体 则属性 而不是 Get Set 方法 如何影响对象大小 例如 考虑以下类 public class Person Address ad
  • 如何在没有 ON 子句的情况下连接 2 个表

    我想要得到SUM column a 从两个不同的表中获取它们的差异 我正在使用MySQL Table A s sum 1234 Table B s sum 4001 我不知道该放什么在我的ON clause SELECT SUM a col
  • Microsoft Bot 与 Whatsapp 集成 [已关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试整合微软机器人框架 https dev botframework com 使用 WhatsApp 我已经拥有与机器人服务对话
  • 如何从亚马逊获取产品的图片和标题?

    我正在尝试根据亚马逊的独特产品代码制作一个产品列表 例如 https www amazon in gp product B00F2GPN36 https www amazon in gp product B00F2GPN36 其中 B00F
  • UIView 子类有自己的 XIB [重复]

    这个问题在这里已经有答案了 我创建了一个自定义 UIView 子类 并且不希望在 UIView 子类中的代码中布局 UI 我想使用 xib 来实现这一点 所以我所做的如下 我创建了一个 ShareView 类 它是 UIView 的子类 我