在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 的文本被设置回笔尖设置值

如何在mvc中传递具有2个值的查询字符串

如何在 iOS Objective C 的嵌套 UICollectionViews 中从 Child UICollectionViewCell 的 UIButton 将值传递给新的 UIViewCon

为啥我的值没有传递到 secondViewController [关闭]

隐藏 UIButton 标题

传递参数时无法识别的选择器 - TableView 单元格中的 UIButton |斯威夫特 iOS