【问题标题】:UiButton in a UITableView to pass dataUITableView 中的 UiButton 用于传递数据
【发布时间】:2015-08-24 00:18:31
【问题描述】:

如何通过按同一单元格中的按钮从单元格中传递数据。假设我有一个包含 3 个单元格行的表格,每个单元格都有一个具有不同值的标签。我需要的是当我按下单元格 2 中的按钮时,将该值传递给另一个 ViewController。当我按下它自己的单元格时,在控制器之间传递数据不是问题,但我的问题是当我按下特定按钮并按住该单元格中某个字符串的值时。

谢谢

【问题讨论】:

  • "我的问题是当我按下按钮时" 但是什么当你按下按钮时你的问题是什么?你还没有解释问题是什么。什么是你不知道该怎么做?您知道如何配置按钮并在按下时做出响应,对吧?那么你知道什么?
  • 就在几个小时前,我发布了这个关于如何将单元格按钮与数据源中的数据相关联的答案。你应该能够适应它。 stackoverflow.com/questions/32170095/…

标签: uitableview


【解决方案1】:

您必须将按钮操作委托给控制器。你应该自己研究一下,但我会给你一个简短的例子。

假设你有一个 UITableViewCell ,当然 UITableView 有它自己的委托方法,比如

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath

这些是单元格的选择,但您想控制按钮操作。 所以你有一个像这样的单元格内的按钮

    UIButton *someButton = [[UIButton alloc] initWithFrame:CGRectMake(0,0, 50, 50)];
    [someButton addTarget:self action:@selector(buttonClicked) forControlEvents:UIControlEventTouchUpInside];
    [self addSubview:someButton];

这是在你的单元格中。

.h 你的单元格你这样写委托。

@protocol SomeProtocol <NSObject>

- (void) buttonPressedInCell:(NSString *) data;

@end

以及您在.h中的委托属性

@property (nonatomic, strong) id<SomeProtocol> delegate;

还有你的cell.m

最后你可以委托你的按钮操作

- (void) buttonClicked {
    [delegate buttonPressedInCell];
}

因此,在此之后,您可以随时委托此对象,在您的情况下,您想将它交给您的UITableView,让我们来做吧。

你喜欢CustomTableViewCell

你的控制器必须yourController&lt;SomeProtocol&gt;

你必须像yourCell.delegate = self;一样委派你的单元格

然后实现你的委托方法

- (void) buttonPressedInCell:(NSString *) data {
    // do something like pushing new controller 
    //your data is in your controller now
}

希望对你有所帮助。

更多关于委托here的信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多