- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
经过大量搜索无法找出我的问题。我是 iOS 开发的新手,所以如果我错了请不要介意……。 :P :)
我的 Collection View 单元格中有一个按钮,当按下按钮时,它应该更改其背景图像并获取按下单元格按钮的单元格的内容。
我是这样做的
在我的.h 文件中
@interface MyCell : UICollectionViewCell
@property (nonatomic, strong) UIButton *button;
@end
@interface DetailInvoicing : UIViewController
在 .m 文件中
@implementation MyCell
- (id)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame])
{
self.button = [UIButton buttonWithType:UIButtonTypeCustom];
self.button.frame = CGRectMake(175, 1, 50, 30);
self.button.backgroundColor = [UIColor clearColor];
[self.button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.button setBackgroundImage:[UIImage imageNamed:@"buy.png"]forState:UIControlStateNormal];
[self.contentView addSubview:self.button];
}
return self;
}
- (void)buttonClicked:(UIButton *)sender
{
NSLog(@"button clicked!");
self.button.backgroundColor = [UIColor lightGrayColor];
[self.button setTitle:@"Sold" forState:UIControlStateNormal];
[self.button setBackgroundImage:[UIImage imageNamed:nil]forState:UIControlStateNormal];
}
@end
在viewdidload方法中
[self CollectionLoad];
CollectionLoad 方法是
// Use sqlite query to fetch data and save it in array, then
myCollection.delegate = self;
myCollection.dataSource = self;
[myCollection reloadData];
myCollection.backgroundColor=[UIColor clearColor];
[myCollection registerClass:[MyCell class] forCellWithReuseIdentifier:@"CellID"];
然后
use datasource and delegate methods
点击所需单元格按钮 BG 图像的按钮会更改。还有一些其他随机单元格的按钮背景图像已更改......
这里有什么问题,第二件事是
如何在点击此按钮时获取单元格的内容....
最佳答案
您的问题是重用和数据管理。
首先,您通过从池中出列来重用单元格。然后添加一个具有默认配置的新按钮。因此,每次重复使用该单元格时,您都会添加一个新按钮(即使已经有一个)并且您不会给它任何特殊配置(数据管理问题的一部分)。
对于数据管理,仅更改按钮的状态是不够的 - 您还需要使用按钮选择所代表的新状态来更新数据模型。然后,下次显示该状态时,您可以将其设置为正确的值。
您应该采用的一般方法是子类化 UICollectionViewCell
以便您可以添加按钮(仅一次)。单元子类应该是按钮的目标(而不是 Controller )。单元格子类也可以有一个 @property
,它是与其关联的数据模型的一部分,以便它可以在点击按钮时更新内容。并且,设置属性后,单元格可以根据内容更新自身(设置适当的按钮配置)。或者,单元格可以使用适当的信息回调到 Controller (并且 Controller 可以在数据源方法中配置按钮)。
关于ios - 如何在 uicollectionview 单元格中使用 uibutton 操作并获取单元格的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22730229/
我是一名优秀的程序员,十分优秀!