我搞乱了 iPhone 的开发。我有一个 uiimageview 子类,我想用它来检测触摸。我已成功添加到 InterfaceBuilder,并且可以在应用程序中检测到 UIImageview 子类中的触摸,因此在这方面一切都很好。但是我的 UIImageView 子类有一个自定义初始值设定项,在界面生成器中创建它时不会调用它。
如果我手动初始化 UIImageview 并以编程方式添加它,我认为它会起作用,但随后我就失去了在界面生成器中“查看”我的位置的能力。
我怎样才能做到
1) 在界面生成器中“看到”代码中添加的 uiimageview? (不可能?) 2)当子类在interfacebuilder中实例化时调用我的自定义初始化程序。
谢谢
您好,感谢您的建议。我想我越来越了解 xib 和 viewcontroller 之间的关系了。
我现在成功地以编程方式添加了我的 UIImageView 子类,并使用我的自定义初始化程序覆盖了 InitWithFrame。
我想我读到 xib 调用“awakeFromNib”,所以我可以同样在其中添加我的初始化代码。我喜欢以编程方式添加它的想法,因为我有更多的控制权(尽管设置我的 IU 更困难)
还有一个相关问题。如果我在界面生成器中添加 UIImageView 子类。我可以看到它并检测到对其的触摸。如果我想在 View Controller 类中引用它,我是否有指向它的指针?即它有一个变量名吗?我自己创建的 UIImageViews 我显然知道它们叫什么......
最佳答案
您可能将指令放入了错误的初始化程序中。
根据documentation ,如果从 NIB 取消归档的对象符合 NSCoding
协议(protocol),则使用 initWithCode:
对其进行初始化;不符合 NSCoding
的对象使用 init
进行初始化。
在这种特殊情况下,UIImageView 确实符合 NSCoding
。您可能希望调用 initWithFrame:
并将指令放入该方法中。
关于iPhone 开发者 : UIImageview subclass interface builder - how to call custom initializer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2407838/