首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用setHidden函数时,TableView不会消失

调用setHidden函数时,TableView不会消失
EN

Stack Overflow用户
提问于 2012-07-11 04:01:57
回答 2查看 277关注 0票数 1

我,

在我的handleLongPress函数(cf:手势识别器)中,我尝试让一个手势出现,最后,当TableView被移除时,它就消失了。为此,我使用了手势识别器状态属性和tableView的setHidden函数。不幸的是,tableView在出现之后并没有消失。我不明白为什么。如果你有什么想法,我将不胜感激。

下面是我的代码:

代码语言:javascript
复制
-(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];
    }
}
EN

回答 2

Stack Overflow用户

发布于 2012-07-11 04:08:46

您每次都在重新创建表视图,无论是否将其添加到屏幕上,您都需要在一个属性或一个ivar中捕获您的表视图,然后从那里开始,假设您只需要一个表视图,下面将解决这个问题。

在您接口中有一个tableView属性

代码语言:javascript
复制
@interface ..
{

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

在你的实现中综合这一点...

代码语言:javascript
复制
    -(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,希望它能提供帮助。丹尼尔

票数 2
EN

Stack Overflow用户

发布于 2012-07-11 04:19:39

代码语言:javascript
复制
if(gestureRecognizer.state == UIGestureRecognizerStateEnded)
{
    [tableView removeFromSuperview];
}

由于您正在添加一个表视图,因此应该将其删除。否则,添加longPressGestureRecognizer方法的表视图,并根据需要隐藏/取消隐藏

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11421025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档