【问题标题】:hide or show tableview隐藏或显示表格视图
【发布时间】:2012-07-15 07:26:08
【问题描述】:

假设我在它下面有一个开关和一个小表格视图(无滚动)。我知道开关是否使用bool switchState 打开/关闭,其值在开关的操作方法中发生了变化:

-(IBAction)switchSlide:(id)sender{
    if (toggleSwitch.on == YES) {
        switchState = YES;
    }
    else{ 
        switchState = NO;
    }
}

现在我想要的是它下面的表格视图应该在switchState == NO 时隐藏。我该怎么做?

【问题讨论】:

    标签: objective-c xcode cocoa-touch uitableview


    【解决方案1】:

    每个UIView 都有一个属性hidden

    @property(nonatomic, getter=isHidden) BOOL hidden
    

    因为UITableViewUIView 的子类,您也可以使用UIView 中的方法。
    因此,您的代码只需要稍作调整(假设您在 UITableViewController 中调用此 IBAction):

    -(IBAction)switchSlide:(id)sender{
        if (toggleSwitch.on == YES) {
            switchState = YES;
            self.tableView.hidden = NO;
        }
        else{ 
            switchState = NO;
            self.tableView.hidden = YES;
        }
    }
    

    编辑:

    通过聊天解决了这个问题,解决方案是: 由于您使用了UIViewController,因此您必须为UITableView 创建一个属性。合成它并通过从文件所有者拖动到界面构建器中的UITableView 来连接出口。现在你可以使用上面的代码了。

    【讨论】:

    • 我从笔尖创建了 tableView。 self.tableView.hidden = NO; 或 yes 给出一个错误,基本上是说在视图控制器中找不到 tableView
    • 您使用的是UITableViewController 还是只是UIViewController
    • UITableViewController。将tableview拖入nib并调整连接后,我使用方法:- (UITableViewCell *)tableView:cellForRowAtIndexPath:将单独的行添加到table view中。
    • 每个UITableViewController 都有一个属性tableView。你确定没有错字?
    • tableView的作用域不是仅限于我上面评论中提到的方法吗?