Ios 初始化后如何为UITextField分配委托?

Ios 初始化后如何为UITextField分配委托?,ios,objective-c,xcode,xib,Ios,Objective C,Xcode,Xib,xcode新手,当使用拖放在XIB中创建UI组件时,xcode在哪里声明和分配这些组件的代码 //where the heck are you? UITextField* textField = [[UITextField alloc] initWithFrame: myFrame]; 我检查了XIB,但它只是XML;检查了所有其他源文件,找不到它,所以我肯定遗漏了什么 我这样问是因为我需要在分配文本字段后,向我的UITextField添加一个委托。我尝试在initWithNibName中执行

xcode新手,当使用拖放在XIB中创建UI组件时,xcode在哪里声明和分配这些组件的代码

//where the heck are you?
UITextField* textField = [[UITextField alloc] initWithFrame: myFrame];
我检查了XIB,但它只是XML;检查了所有其他源文件,找不到它,所以我肯定遗漏了什么

我这样问是因为我需要在分配文本字段后,向我的
UITextField
添加一个委托。我尝试在initWithNibName中执行此操作,但无效:

textField.delegate = self;

您可以导入UIKit框架
#导入
。在UIKit中定义了所有UIKit元素。选中此复选框,如果为该元素创建IBOutlet,该选项是否有效?然后将代理分配给它

我也面临同样的问题。如果我把这行放在ViewDidLoad方法中,它对我来说很好。像这样试试

myTextField.delegate = self;

对象加载过程:

当您使用NSNib或NSBundle的方法加载和实例化nib文件中的对象时,底层nib加载代码执行以下操作:

它将nib文件和任何引用的资源文件的内容加载到内存中:

==>整个nib对象图的原始数据加载到内存中,但不是未归档的

==>加载与nib文件关联的任何自定义图像资源,并将其添加到Cocoa图像缓存中;请参阅“关于图像和声音资源”

==>加载与nib文件关联的任何自定义声音资源,并将其添加到Cocoa声音缓存中;请参阅“关于图像和声音资源”

它取消归档nib对象图数据并实例化对象。它如何初始化每个新对象取决于对象的类型及其在存档中的编码方式。nib加载代码使用以下规则(顺序)确定要使用的初始化方法

==>默认情况下,对象会收到
initWithCoder:
消息。 在OSX中,标准对象的列表包括系统提供的、默认Xcode库中可用的视图、单元格、菜单和视图控制器。它还包括使用自定义插件添加到库中的任何第三方对象。即使您更改了这样一个对象的类,Xcode也会将标准对象编码到nib文件中,然后在对象未归档时告诉archiver在您的自定义类中进行交换

在iOS中,使用
initWithCoder:
方法初始化符合
NSCoding
协议的任何对象。这包括UIView和UIViewController的所有子类,无论它们是默认Xcode库的一部分还是您定义的自定义类

==>OS X中的自定义视图会收到一条
initWithFrame:
消息。 自定义视图是NSView的子类,Xcode没有可用的实现。通常,这些视图是您在应用程序中定义并用于提供自定义可视内容的视图。自定义视图不包括作为默认库的一部分或集成的第三方插件的一部分的标准系统视图(如NSSlider)

当遇到自定义视图时,Xcode会将一个特殊的NSCustomView对象编码到nib文件中。自定义视图对象包含构建您指定的真实视图子类所需的信息加载时,NSCustomView对象向real view类发送alloc和
initWithFrame:
消息,然后将生成的视图对象本身交换。
净效果是real view对象在nib加载过程中处理后续交互

iOS中的自定义视图不使用
initWithFrame:
方法进行初始化。

==>除上述步骤中描述的自定义对象外,其他自定义对象将接收初始化消息


有关详细说明,您可以阅读苹果的文档:

为此,您需要包含基本的框架,例如“在ur中导入”。h文件 例如,如果您使用的是文本字段,则 您需要在中声明属性和映射。h文件如下所示

@属性(非原子,保留)IBOutlet UITextField*txtNote

对于文本字段,还需要添加其委托方法

通过使用此选项,可以在完成后映射文本视图

在.m文件中,您需要声明@synthesis txtNote;在@implementation下面

一旦完成,就不需要分配任何东西,只需要确保您发布


menory一旦您使用dealloc-(void)dealloc方法中的[txtNote release]离开页面

我不确定是否遵循,这些只是头文件,我正在寻找我添加到我的XIB中的组件的声明和分配位置,以便在我的项目中使用。首先,这是一个非常好的问题。我已经为iOS开发了超过1.5年,但从未想过如果在xib中连接,组件会分配到哪里;)其次,在主视图之后分配组件。因此设置
myTextField.delegate=self在viewDidLoad中,而不是
initWithNibName
中,因为当时没有分配主视图。我希望在初始化这些xib组件时,每当分配viewcontroller实例时,基本上,你需要将.h文件中的属性添加到你在Xib中使用的每个元素中,并释放内存。我有一个用于文本字段的IBOutlet;作为一个测试,我用一个动作方法分配了这个代理,它是有效的,但它是一个黑客。我认为
ViewDidLoad
可以工作。