刷新IBAction的行动

时间:2015-02-13 12:17:14

标签: ios objective-c uibutton uicollectionview refresh

我有UIButton向右滚动UICollectionView。该按钮被添加到我UICollectionView的超级视图中,它漂浮在单元格的顶部。 但我只能让UIAction发生一次。如何复制操作或刷新按钮以便我可以再次使用它。 这是我的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    button.frame = CGRectMake(910, 345 , 100, 100);
    button.backgroundColor = [UIColor purpleColor];
    [self.collectionView.superview addSubview:button];
    [button addTarget:self action:@selector(changeContentOffset:) forControlEvents:UIControlEventTouchUpInside];
}

- (IBAction)changeContentOffset:(id)sender {
    [self.collectionView setContentOffset:CGPointMake(910, -65) animated:YES];
}

3 个答案:

答案 0 :(得分:0)

您可以将按钮添加到self.view

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath

方法您只需将按钮添加到单元格内容视图[cell.contentView addSubview: button];

即可

答案 1 :(得分:0)

如果在IBAction内的行中设置断点,您是否只停留一次?根据您的问题,您希望每次单击该按钮时向右滚动,但您的方法不会这样做。

该方法在您第一次点击按钮时设置contentOffset的{​​{1}},但在其他时间,由于UICollectionView已经移位,您无法看到任何更改。尝试用以下方法替换您的方法:

UICollectionView

答案 2 :(得分:0)

您必须将此方法更改为依赖于collectionView实际位置...

 self.collectionView.paginateEnabled = YES;


- (IBAction)changeContentOffset:(id)sender {
   float x = cellWidth + self.collectionView.contentOffset.x;
   [self.collectionView setContentOffset:CGPointMake(910, x) animated:YES];

}