Iphone 如何识别或知道方法中引用了哪个控件?

Iphone 如何识别或知道方法中引用了哪个控件?,iphone,Iphone,在我的具体案例中,如何识别或知道shouldChangeCharactersRange方法中引用了哪个UITextField 我知道参数(UITextField*)textField包含被引用的对象,但如何比较以确定它是哪一个 如果使用IB创建界面,则可以在控制器中为每个UI元素创建IBOutlet,然后在IB中连接,然后将textField参数与它们进行比较: //header IBOutlet UITextField* nameField; IBOutlet UITextField* add

在我的具体案例中,如何识别或知道shouldChangeCharactersRange方法中引用了哪个UITextField

我知道参数(UITextField*)textField包含被引用的对象,但如何比较以确定它是哪一个

  • 如果使用IB创建界面,则可以在控制器中为每个UI元素创建
    IBOutlet
    ,然后在IB中连接,然后将
    textField
    参数与它们进行比较:

    //header
    IBOutlet UITextField* nameField;
    IBOutlet UITextField* addressField;
    
    //Implementation
    ...
    if (textField == nameField){
    }
    if (textField == addressField){
    }
    
  • 2在IB中,您还可以为每个
    UITextField
    (可用于每个UIView子类)分配唯一的标记值,并比较标记值:

        #define nameTag 10
        #define addressTag 11
    
        //Implementation
        ...
        if (textField.tag == nameTag){
        }
        if (textField.tag == addressTag){
        }
    

    最优雅的解决方案是使用interface builder/storyboard中的标记,为每个文本字段分配标记


    然后在代码中使用一个switch(textfield.tag)框,代码看起来比放很多if语句要干净得多

    Bah你又一次打败了我弗拉基米尔:)啊,我忘了标记,但我想用更好的方法来做。我没有意识到我可以只比较参考名称。谢谢你,弗拉基米尔。