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