如何将UIButton链接到数据对象?(iPhone/C)

如何将UIButton链接到数据对象?(iPhone/C),iphone,objective-c,uibutton,Iphone,Objective C,Uibutton,我是iPhone开发者的新手。我的应用程序根据我的数据模型动态创建按钮。模型不仅仅是一个简单的列表;它是一棵树。我需要某种方法将创建的按钮与该数据模型关联起来,以便当单击按钮时,我知道它对应于模型的哪个部分 在Windows上,大多数UI控件都有一个“标记”字段,您可以在其中放置自定义数据。使用类似的模式,我想在iPhone上做的是: - (void)createMyButton:(MyModel*)foo { UIButton* button = <insert creation c

我是iPhone开发者的新手。我的应用程序根据我的数据模型动态创建按钮。模型不仅仅是一个简单的列表;它是一棵树。我需要某种方法将创建的按钮与该数据模型关联起来,以便当单击按钮时,我知道它对应于模型的哪个部分

在Windows上,大多数UI控件都有一个“标记”字段,您可以在其中放置自定义数据。使用类似的模式,我想在iPhone上做的是:

- (void)createMyButton:(MyModel*)foo
{
  UIButton* button = <insert creation code here>
  [button addTarget:self action:@selector(handleCreatedButtonTouch:) ...];
  button.tag = foo;
}

- (void)handleCreatedButtonTouch:(id)sender
{
  UIButton* button = (UIButton*)sender;
  MyModel* foo = (MyModel*)(button.tag);
  [foo userTouchedMyButton];
}
-(void)createMyButton:(MyModel*)foo
{
UIButton*按钮=
[按钮添加目标:自我操作:@selector(HandleCreatedButtoTouch:)…];
button.tag=foo;
}
-(无效)HandleCreatedButtoTouch:(id)发送方
{
UIButton*按钮=(UIButton*)发送器;
MyModel*foo=(MyModel*)(button.tag);
[foo userTouchedMyButton];
}
我在苹果的文档中找不到任何关于这个领域的提及。你是如何做到这一点的?再说一次,我没有任何简单的方法来索引到我的数据模型中,对整个数据模型进行枚举以找到匹配项似乎是非常错误的

iPhone SDK中的UI元素有一个
标记
属性,与您描述的内容类似。如果您希望使用button.tag,则可以开箱即用

对伪代码的唯一更改是在
handleCreatedButtoTouch:
方法中。该行:

MyModel* foo = (MyModel *)(button.tag);
将尝试将
标记
属性强制转换为
MyModel
对象。您可能希望在MyModel中创建一个初始值设定项来处理查找,例如:

MyModel *foo = [[MyModel alloc] initFromButtonWithTag:[sender tag]];

希望这有帮助。

这很有效,谢谢!我再次查看了文档,在MacOS X文档中找到了“NSControl”,但没有找到iPhone的“UIControl”。怎么回事?文档关闭了吗?有时候你必须深入文档以找到你想要的东西
ui按钮
继承自
UIControl
UIControl
继承自
ui视图
ui视图
具有
标记
属性。您可以将其可视化为:
UIControl:UIView:UIResponder:NSObject
,其中
UIView
支持
tag
。为什么要创建新对象?如果只想传入一个现有的对象呢?