我想要做的是在UITableViewCell
上滑动时显示隐藏的菜单。
我不知道该怎么做,任何指导都将不胜感激。
这是一张图片,以便您明白:
答案 0 :(得分:0)
以下是一些指导:
每个UITableViewCell可以有两个视图,一个在另一个上面。最顶层的视图是默认显示的,最底部的视图是您所谓的“隐藏菜单”。
您需要在故事板中注册UISwipeGestureRecognizer,以管理您在上面显示的表格单元格。您将在自定义UITableViewCell类中为该手势识别器创建IBAction。在该动作中,您将处理发生的滑动,然后根据您的期望值移动单元格的最顶部视图,直到最大位移(在x方向上)。
如果您需要更多信息,请与我们联系,我会提供更多信息。我无法从您的原始问题中了解您的经验,例如,您是否知道如何使用自定义UITableViewCells创建UITableView?
更新:
确保您正在创建包含自定义UITableViewCell的XIB文件。然后,您可以轻松地将UISwipeGestureRecognizer添加到XIB,并将其连接到您的单元类中的IBAction。在你的UIViewController中,你将使用重用标识符注册XIB并以这种方式填充你的UITableView。
答案 1 :(得分:0)
你可以通过使用自定义单元格来实现它我给出了ruff的想法和示例代码如何实现这一点,
首先创建一个新文件objective-c,并将其命名为CustomCell
UITableViewCell
的子类,并在CustomCell.h
文件中
我拍了一些虚拟视图和标签
#import <UIKit/UIKit.h>
@interface CustomCell : UITableViewCell
{
}
@property (nonatomic, retain) UIView *optionsView; //this is your options to show when swiped
@property (nonatomic, retain) UIView *mainVIew; //this is your view by default present on top of options view
@property (nonatomic, retain) UILabel *messageLabel;
@property (nonatomic, retain) UILabel *optionsLabel;
@end
CustomCell.m
中的
#import "CustomCell.h"
@implementation CustomCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
//since we are not using the xib we hav to initilise hear
_optionsView = [[UIView alloc]init];
_mainVIew = [[UIView alloc]init];
_optionsView.backgroundColor = [UIColor greenColor];
_mainVIew.backgroundColor = [UIColor redColor];
_optionsView.alpha = 0.0f;
_mainVIew.alpha = 1.0f;
_messageLabel = [[UILabel alloc]init];
_optionsLabel = [[UILabel alloc] init];
[_optionsView addSubview:_optionsLabel]; //hear u can add image view or buttons to options view i just added the label
[_mainVIew addSubview:_messageLabel];
//add the gesture to main view
UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(whenSwiped:)];
swipeGesture.direction = UISwipeGestureRecognizerDirectionRight;
[_mainVIew addGestureRecognizer:swipeGesture];//add it to main view
UISwipeGestureRecognizer *swipeReverse = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(whenSwipedReversed:)];
swipeReverse.direction = UISwipeGestureRecognizerDirectionLeft;
[_optionsView addGestureRecognizer:swipeReverse]; //add it to options view so that user can swipe back
[self.contentView addSubview:_optionsView]; //first add the optionsVIew
[self.contentView addSubview:_mainVIew]; //then main view
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
- (void)layoutSubviews
{
[super layoutSubviews];
_optionsView.frame = self.bounds;
_mainVIew.frame = self.bounds;
_messageLabel.frame = _mainVIew.bounds;
_optionsLabel.frame = _optionsView.bounds;
_optionsView.alpha = 0.0f;
_mainVIew.alpha = 1.0f;
}
//handle swipe call backs in cell only and make a delegate to controller about the button actions of options view
- (void)whenSwiped:(id)sender
{
CGRect frameRect = _mainVIew.frame;
frameRect.origin.x = 300.0f;
[UIView animateWithDuration:0.5 animations:^{
_mainVIew.frame = frameRect;
_optionsView.alpha = 1.0f;
}];
}
- (void)whenSwipedReversed:(id)sender
{
CGRect frameRect = _mainVIew.frame;
frameRect.origin.x = 0.0f;
[UIView animateWithDuration:0.5 animations:^{
_mainVIew.frame = frameRect;
_optionsView.alpha = 0.0f;
}];
}
@end
在视图控制器导入#import "CustomCell.h"
在tableview的数据源方法中
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomCell *Cell = [tableView dequeueReusableCellWithIdentifier:@"CELL"];
if(Cell == nil)
{
Cell = [[CustomCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CELL"];
}
Cell.selectionStyle = UITableViewCellSelectionStyleNone;
Cell.optionsLabel.text = @"options";
Cell.messageLabel.text = @"swipe me";
return Cell;
}
以上是示例,希望这有助于你.. :) 和评论,如果没有