我想知道是否可能以及如何实施以下用户操作:
用户点击一个在tableView行上显示为UIView的按钮。点击按钮后,应显示包含按钮的UIView,如下图所示:
更新的问题:
我改变了我的要求。从左到右翻转行后,应显示UIView。
我已将以下代码包含在我的cellForRowAtIndexPath方法中:
//swipe left-right
UISwipeGestureRecognizer *swipeLeftRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleGestureLeftRight:)];
[swipeLeftRight setDirection:(UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionLeft )];
[cell addGestureRecognizer:swipeLeftRight];
//end of swipe left-right
我添加了handleGestureLeftRight方法:
-(void)handleGestureLeftRight:(UIGestureRecognizer *)gec
{
{
CGPoint p = [gec locationInView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:p];
if (gec.state == UIGestureRecognizerStateEnded) {
NSLog(@"GESTURE LEFT-->RIGHT DONE");
CGRect newSize = CGRectMake(0.0f ,0.0f, 150.f, 50.0f);
UIView *newView = [[UIView alloc] initWithFrame:newSize];
newView.backgroundColor = [UIColor redColor];
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self
action:@selector(aMethod:)
forControlEvents:UIControlEventTouchDown];
[button setTitle:@"Close" forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[newView addSubview:button];
[self.view addSubview:newView];
}
}
}
我希望它能按预期工作,现在我需要添加更多按钮并更改所有CGRectMake参数,以适应UIView中的所有按钮。
现在,我完成了这件事,我只会问你这个问题:
如何设置UIView坐标以使其像图片一样,这意味着就在所选行的上方?
答案 0 :(得分:1)
1。您可以在屏幕上获取单元格的位置:
CGRect positionOnScreen = [tableView convertRect:self.frame toView:parentViewController.view];
其中self
是UITableViewCell,parentViewController
是包含该表的UIViewController。您需要在自定义单元格中执行此操作。然后,您可以将此值传递给您的父UIViewController。使用以下命令将弹出视图添加到UIViewController:
[myPopUpView setFrame: CGRectMake(myPopUpView.Frame.Origin.x , positionOnScreen.origin.y - myTableCell.Frame.Size.Heigh - myCustomCell.Frame.Size.Height, myPopUpView.Frame.Size.Width, myPopUpView.Frame.Size.Width)];
myPopUpView.Alpha = 1;
我假设您已经在.XIB中创建了弹出视图,Alpha属性等于0.
2。您可以通过隐藏弹出窗口来“关闭”弹出窗口:
myPopUpView.Alpha = 0;
您还可以使用addSubView:
和removeFromSuperview
添加/删除弹出视图,而不是在.XIB中创建它并使用Alpha属性。