当我点击UICollectionView
内的按钮时,我想将我的食谱ID存储为会话ID。任何人都可以给我解决方案。我将标签值设置为我的食谱ID,但我不确定这是否正确。
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
[self.mySpinner stopAnimating];
static NSString *identifier = @"Cell";
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
UIButton *recipeid= (UIButton *)[cell.contentView viewWithTag:107];
[recipeid addTarget:self
action:@selector(aMethod:) forControlEvents:UIControlEventTouchUpInside];
[recipeid setTag:(int)[[array objectAtIndex:indexPath.row] valueForKey:@"RecID"]];
}
-(IBAction)aMethod:(UIButton *)sender
{
[[NSUserDefaults standardUserDefaults] setObject:sender forKey:[NSNumber numberWithInt:(@"RecipeIdsession",sender.tag)]];
[[NSUserDefaults standardUserDefaults] synchronize];
[self performSegueWithIdentifier:@"recipedetail" sender:nil];
}
答案 0 :(得分:1)
您可以使用CGPoint
的{{1}}来获取此类Button
。
IndexPath
注意:从-(void)aMethod:(UIButton *)sender{
CGPoint center= sender.center;
CGPoint point = [sender.superview convertPoint:center toView:self.collectionView];
NSIndexPath *indexPath = [self.collectionView indexPathForItemAtPoint:point];
NSInteger recid = [[array objectAtIndex:indexPath.row] valueForKey:@"RecID"];
}
删除setTag
行,无需设置标记。
答案 1 :(得分:0)
请尝试在NSUserDefaults中添加RecID
而不是按钮。
例如:
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:sender.tag] forKey:[NSNumber numberWithInt:(@"RecipeIdsession",sender.tag)]];
答案 2 :(得分:0)
有许多"不要""在你的代码中。 要指出一些,
cellForRowAtIndexPath
方法中,因为此方法可以被多次调用,并且您的按钮目标列表将继续增加。这应该移到您的自定义单元格。您应该开始学习使用UICollectionView
的表单基础知识。您可以参考此link几乎可以实现您的案例,但在UITableView
中,大多数步骤都是相似的。
答案 3 :(得分:0)
您可以在下面找到以下代码段。希望这会对你有所帮助。
// .h文件
@interface HomeCollectionCell : UICollectionViewCell
@property (nonatomic,strong) IBOutlet UILabel *recipeid;
@end
// .m文件
@implementation HomeCollectionCell
@end
//您的View控制器.m文件 ...
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
HomeCollectionCell *cell = (HomeCollectionCell*)[collectionView dequeueReusableCellWithReuseIdentifier:@"HomeCollectionCell" forIndexPath:indexPath];
cell.recipeid.tag = indexPath.row;
[recipeid addTarget:self action:@selector(aMethod:) forControlEvents:UIControlEventTouchUpInside];
return cell;
}
-(IBAction)aMethod:(UIButton *)sender
{
UIButton *btn = (UIButton*)sender;
int rec_id = (int) [[array objectAtIndex:btn.tag] valueForKey:@"RecID"];
<you code to use for rec_id>
}