问题标签 [initwithcoder]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - 使用 NSCoder 将自定义对象保存到 plist
所以,我意识到我需要使用 NSCoding 将我的自定义对象保存到 plist。
initWithCoder
我正在苦苦挣扎的部分正是在我实现了andencodeWithCoder
方法之后我是如何做到这一点的。他们分别返回id
和void
,所以如果他们已经将我的对象转换为 NSData 或他们对他们做的任何事情,数据在哪里,所以我可以保存它?
我有这样设置的方法:
试图弄清楚下一步是将这些对象(已经在 NSMutableArray 中)保存到 .plist 中,并在重新打开应用程序时调用。
任何帮助表示赞赏!
ios - 使用 IB 从 View Controller 的视图中加载带有 XIB 的自定义 UIView
我有一个使用 Interface Builder 构建的自定义UIView
( )。MyCustomUIView
我想把这个自定义视图放在MyViewController
的视图中,它也是使用 IB 设计的。我在XIB 中放置了UIView
一个子视图,MyViewController
并将它的类设置为MyCustomUIView
. 问题是,当我运行代码时,只出现一个空白视图。(当我在代码中实例化MyCustomUIView
时,它显示得很好。)
我只是initWithFrame:
通过以下方式覆盖该方法MyCustomUIView.m
:
我应该怎么做才能使视图正确加载?应该怎么initWithCoder:
看?
xcode - 添加 messageUI.framework 后应用停止工作
添加 messageUI.framework 后应用停止工作
我创建了一个可以正常工作的应用程序,我想添加一些新功能。我添加了messageUI.framework
它并停止工作。如果我删除框架,它会再次起作用,但这不是想法。
我收到的错误是:
-[Account initWithCoder:]: unrecognized selector sent to instance 0x1cd953a0
我有一个NSObject
名为 Account 的自定义,加载时出现错误:
以前保存时:
它可能是由一些重叠的变量或类似的东西引起的吗?
笔记:
Account.h
就好像:
并且Account.m
是:
iphone - 使用情节提要时设置完成的 TabBar 图像?
我正在开发一个应用程序,其中大部分 UI 是通过 Xcode 中的 Storyboard 设置的。我想做的一件事是为 TabBar 上的 UITabBarItems 指定“完成”图像,而不是您可以通过 Interface Builder 访问的默认“Stencilled”图像。
我的问题是在哪里执行此操作的最佳位置,我目前正在 awakeFromNib 中执行此操作,因为当从情节提要中取消归档内容时需要执行此操作,但我不确定是否应该使用 initWithCoder: 代替,这是最好的有关系吗?
或者
我知道initWithCoder:
当出口和动作尚未连接时,在从笔尖(包含在故事板中)取消归档对象开始时调用。我也知道awakeFromNib
在取消归档过程结束时会调用它,并表示 viewController 现在可以使用了。我的感觉是,这实际上取决于您想做什么,尽管使用awakeFromNib
可能会证明问题较小,因为您不会遇到尚未连接出口和操作的问题。
编辑:
让我换个说法,你会在什么情况下使用initWithCoder:
,awakeFromNib
反之亦然?
xcode - 在 UIView 中显式调用 initWithCoder 或 ViewDidAppear 等效项?
在 UIView 中,我在顶级视图控制器中有一个带有 IBAction 和方法的导航按钮。
在 IBAction 代码中,我翻转了一个布尔值,以便当执行返回 UIView 时,在 drawRect 之前有一些新设置:重新绘制视图。
如果所有这些都在 ViewController 中,我可以将新的设置代码放在 ViewDidAppear 之类的东西中,这样每次按下按钮时它都会执行。但是,在 UIView 级别没有这样的方法。有 initWithCoder,但这似乎只执行一次(当故事板/笔尖加载时)。
所以我的问题是 - 要么,有没有办法在 VC 级别从我的 IBAction 显式调用 initiWithCoder 方法(我已经尝试过 [self initWithCoder:nil] 但 UIView 级别的断点没有触发)或者有当执行返回到 UIView 级别时运行的方法,例如 ViewDidAppear?
谢谢
目标图片:
uiscrollview - initWithCoder 为 frame 属性返回 0 值
我对 uiscrollview 进行了分类,并使用 initWithCoder 为我的 uiscrollview 准备了所有子视图。我使用下面的代码来设置它:
但这一直失败,因为 self.frame 属性总是返回 0 值。使用self.frame属性对我来说非常重要,因为我想使用情节提要对滚动视图的框架进行任何高度调整。
我使用 xib 文件而不是使用情节提要尝试了同样的事情,它工作正常。但在我的项目中,我不想使用 xib 文件。
如果有人能解释我为什么在使用情节提要时在 initWithCoder: 方法中得到 0 值,那就太好了?如果使用情节提要如何实现这一目标?
PS:我注意到layoutSubviews方法返回正确的帧信息,但我无法在这里创建我的子视图,因为每次帧更改都会调用它(当我滚动时)
objective-c - 如何在不被 initWithFrame: 覆盖的实例变量的情况下保存 NSView?
这里是可可新手。我试图在 NSView 中对实例变量进行编码以保存到文件中。但是,每当我对其进行编码时,它都会在调用 initWithFrame: 时被覆盖为 (null)。有没有办法可以跳过这种行为并将实例变量加载到未归档的 NSView 上?这是我的代码:
在上面的代码中,我首先将要填充的颜色设置为绿色,然后在 drawRect: 方法完成后将其更改为黄色,因此保存的颜色为黄色。但尽管如此,它在 initWithFrame: 日志注释中恢复为空,并且我再次获得绿屏。从外观上看,唯一的方法似乎是将数据与视图分离。但如果有更简单的方法,任何人都可以帮助我吗?
ios - 非标准 Storyboard 视图控制器初始化(不是 -initWithCoder :)
-initWithCoder:
除了Storyboard 视图控制器,还有其他方法可以使用 init 方法吗?我已经知道你可以在里面的 VC 上设置属性-prepareForSegue:
。
ios - 在 initWithCoder 中设置 UIImageView 框架
我正在尝试在 UICollectionCell 的子类中设置 UIImageView 的帧大小,但它不起作用。我使用故事板。
在代码中,除了关于 imageView 的最后一行之外,一切正常。如果我将代码放在 drawRect 中,它可以正常工作。
ios - 通过 IB 将属性设置为自定义子视图初始化(用于 uitableviewcell 模板)
我想创建一个 uitableview 混合不同类型的项目来显示。对于每个项目,我想显示一些通用信息(始终相同的类型和样式)和一些细节(根据项目类型不同的类型和样式)。= 我需要某种“模板管理器”。
我使用 coredata(Item 是一个实体)存储和检索项目,通过 nsfetchedresultscontroller 将数据挂钩到 tableview,项目类型存储为名为 item_nature 的属性。
我正在使用故事板,所以首先我考虑使用不同的原型单元格,并在 cellForRowAtIndexPath 中,根据 item_nature 值分配所需的单元格原型。几乎可以工作,但由于我将拥有大约 10 种不同的项目,因此在故事板中管理 10 个原型单元并不是很实用。另外,我需要根据内容类型/长度调整行高,这种方法意味着很多冗余代码......
现在我尝试第二种方法,但无法使其工作。我的想法:
1> 在情节提要中,我只为每个项目类型创建一个原型单元。见下图,这个单元格由一张图像和两个标签(蓝色)+一个视图(红色)组成
蓝色区域将用于“通用信息”(相同的类型、大小和样式,无论项目,只有内容更改),红色区域就像一个容器,我通过根据 item_nature 添加特定子视图来调整特定模板
2> 在单元格自定义类中,我为三个标签和视图设置 IBOutlets,并将这些出口与情节提要中的 UIelements 链接
MainTLCustomCell.h
3> 我为每个项目模板创建一个专用的xib文件,例如BasicArticleItemTemplate.xib,ArticleWithPicItemTemplate.xib等这些xib应该根据项目的item_nature加载到视图容器中(单元格中仍然是红色)
4> 我创建了一个名为 CellTemplateContainer 的 UIView 子类,其属性为“templateType”,并将该类分配给原型单元格中的“容器”视图。由于这个视图是由情节提要实例化的,在 -initWithCoder 中(我也在 -awakeFromNib 中尝试过),我根据 templateType 属性的值(我将尝试从 tableViewController 发送的值)设置一个条件来添加子视图
单元格模板容器.h
单元格模板容器.m
5> 在 tableViewClass 中,在 -cellForRowAtIndexPath 中,我设置了三个泛型标签的值,并尝试为视图容器的属性“templateType”设置值:
只要我不对 templateType 值设置条件,在 -initWithCoder 中添加子视图就可以很好地工作。
我的问题在这里:
itemTemplate 视图永远不会得到这个值(总是 0,所以我假设为 nil)。我仍然对对象与实例感到困惑,并且显然不掌握调用 init 方法的顺序。但我认为我可以在容器视图初始化之前或期间将值“发送”到容器视图以考虑...我也希望通过这种方法我可以轻松地添加一个新的 item_nature 和关联的模板模型 + 具有更简单的方法来管理有关单元格高度计算的代码。
所以,两个问题: - 我做错了什么?- 在此类项目中,您推荐什么作为处理单元模板管理的好方法?
谢谢