在iOS中单击UIButton时传递字符串值
Posted
技术标签:
【中文标题】在iOS中单击UIButton时传递字符串值【英文标题】:Passing string value on click of UIButton in iOS 【发布时间】:2013-03-05 06:39:40 【问题描述】:我查看了许多文章,了解在 ios 中单击 uibutton 时传递值。 但一般情况下,人们会使用标签属性作为替代。
但我找到了以下解决方案:
UIButton *btnComLike=[[UIButton alloc] init];
[btnComLike setFrame:CGRectMake(127, 20, 30, 15)];
[btnComLike addTarget:self action:@selector(btnCommentLike_click:) forControlEvents:UIControlEventTouchUpInside];
[btnComLike setTitle:@"Like" forState:UIControlStateNormal];
[btnComLike setTitle:@"my any string value" forState:UIControlStateReserved];
和处理程序方面:
-(void)btnCommentLike_click:(id)sender
NSLog(@"%@",[sender titleForState:UIControlStateReserved]);
这是可行的解决方案吗?我认为其中一个是利用这种状态UIControlStateReserved
。
或者使用这种技术有什么缺点吗?
如果是,请告诉我有什么问题?
【问题讨论】:
你传递按钮标题? 是的 @NANNAV 但具有 UIControlStateReserved 状态... @Downloadmore,reserved 表示已保留,而苹果可能没有为你保留。 不,那会更糟。不要使用任何 UIView 的任何属性或字段——并且 UIButton 是一个 UIView——来传递信息。这违反了 Cocoa 构建的 Model-View-Controller 模式。 顺便说一句:我看过你的个人资料:你应该接受更多答案。 【参考方案1】:对我来说,这个解决方案就像殴打 MVC 并滥用可怜的按钮。
您只需将要在 action 方法中使用的对象写入 ivar(实例变量、成员变量)并在那里访问它。
您的解决方案也可能被视为非法,来自docs:
UIControlStateReserved
保留供内部框架使用的控制状态标志。
【讨论】:
Yap,XY 和设计问题,深陷泥潭(一个人怎么可能在 3 行代码中犯两个巨大的概念错误?)以上是关于在iOS中单击UIButton时传递字符串值的主要内容,如果未能解决你的问题,请参考以下文章
iOS - 按下时 UIButton 的文本被设置回笔尖设置值
如何在 iOS Objective C 的嵌套 UICollectionViews 中从 Child UICollectionViewCell 的 UIButton 将值传递给新的 UIViewCon