的TableView不消失时setHidden函数被调用

问题描述:

我,的TableView不消失时setHidden函数被调用

在我handleLongPress功能(CF:手势识别),我尝试做一个TableView中出现,并在年底,当手势删除,消失。为此我使用手势识别器状态属性以及tableView的setHidden函数。不幸的是,tableView出现后并没有消失。我不明白为什么。如果你有想法,我会很感激。

这里是我的代码:

-(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer 
{ 
    UITableView *tableView = [[UITableView alloc]initWithFrame:CGRectMake(gestureRecognizer.view.center.x - 10, gestureRecognizer.view.center.y - 10, 100, 100)]; 

    tableView.layer.cornerRadius = 20.0; 
    tableView.layer.frame = CGRectInset(tableView.layer.frame, 20, 20); 


    if (gestureRecognizer.state == UIGestureRecognizerStateBegan) { 
    [self addSubview:tableView]; 
    } 

    if(gestureRecognizer.state == UIGestureRecognizerStateEnded) 
    { 
     [tableView setHidden:YES]; 
    } 
} 

你现在重新创建表视图每次,要么将它添加到屏幕或没有,你需要捕捉到你的tableview在属性或伊娃,然后再从那里,即时通讯假设你只想要一个表视图,下面将解决这个问题

在你的界面有一个的tableView财产在你implem

@interface .. 
{ 

} 
@property(nonatomic, retain) UITableView *tableView; 
@end 

合成这种entation ...

-(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer 
    { 
     if(tableView==nil) 
     { 
     self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(gestureRecognizer.view.center.x - 10, gestureRecognizer.view.center.y - 10, 100, 100)] autorelease]; 
     [self addSubview:self.tableView]; 
    } 

     self.tableView.layer.cornerRadius = 20.0; 
     self.tableView.layer.frame = CGRectInset(tableView.layer.frame, 20, 20); 


     if (gestureRecognizer.state == UIGestureRecognizerStateBegan) { 
      [self.tableView setHidden:false]; 
     } 

     if(gestureRecognizer.state == UIGestureRecognizerStateEnded) 
     { 
      [self.tableView setHidden:YES]; 
     } 
    } 

有关属性的详细信息检查this出 希望它有助于.. 丹尼尔

+0

令人惊讶的是,tableview出现并消失一次,但不是之后。如果选中并定期调用“if”块。它像setHidden函数不能从YES到NO被调用两次。这与不透明的功能是一样的。 – 2012-07-10 20:50:48

if(gestureRecognizer.state == UIGestureRecognizerStateEnded) 
{ 
    [tableView removeFromSuperview]; 
} 

,因为你要添加的tableview,你应该删除它。否则,添加tableview outisde你的longPressGestureRecognizer方法,并根据需要隐藏/取消隐藏

+1

我已经试过了,它没有工作 – 2012-07-10 20:23:41

+0

尝试setHidden:YES并从Superview行中删除。如果tableview仍然可见,那么tableView将被添加或在其他地方可见 – 2012-07-10 20:49:39