Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone:UITableView没有单元格时添加背景按钮查看_Iphone_View_Uitableview - Fatal编程技术网

iPhone:UITableView没有单元格时添加背景按钮查看

iPhone:UITableView没有单元格时添加背景按钮查看,iphone,view,uitableview,Iphone,View,Uitableview,我有一个UITableViewController,当没有数据填充UITableView时,我想添加一个使用图像的按钮。因此,用户不会看到没有记录的tableview,他们会看到一个图像,上面写着“没有添加记录,点击添加一个”,然后他们单击,我们创建一个新的 我以为我会隐藏UITableView,然后创建按钮,但我从未看到按钮。我在这里使用: if ([[fetchedResultsController sections] count] == 0) { self.tableVie

我有一个UITableViewController,当没有数据填充UITableView时,我想添加一个使用图像的按钮。因此,用户不会看到没有记录的tableview,他们会看到一个图像,上面写着“没有添加记录,点击添加一个”,然后他们单击,我们创建一个新的

我以为我会隐藏UITableView,然后创建按钮,但我从未看到按钮。我在这里使用:

if ([[fetchedResultsController sections] count] == 0) {
        self.tableView.hidden = YES;
        // Create button w/ image
        UIButton * btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        btn.frame = CGRectMake(0, 0, 100, 50);
        [btn setImage:[UIImage imageNamed:@"no-rides.png"] forState:UIControlStateNormal];
        [self.view addSubview:btn];
    }

关于为什么我永远看不到按钮的想法?当我显示此视图时,它似乎有一个透明的背景一秒钟,然后变为白色…

在UITableViewController中,self.view可以是self.tableView,在这种情况下,隐藏表也会隐藏按钮。尝试使用自定义UIViewController并将表或按钮创建为self.view的子视图


或者,当没有数据时,您可以创建一个包含按钮的自定义单元格,并使用该单元格代替普通单元格。

我不确定它是否有效,但您可以尝试以下方法:

  • 如果视图控制器不是UITableViewController且包含UITableView
    [self.tableView removeFromSuperview]然后
    [self.view addSubview]

  • <> >如果你的视图控制器是UITableViewController,你可能需要考虑将第一行设置为包含图像和文本。然后,您可以处理事件:
    tableView:didSelectRowAtIndexPath:
    ,如果用户单击第一个单元格,您将触发处理按钮事件的方法


    我相信您可以将该按钮添加到表尾,因为即使没有单元格,也会显示表尾。(注意,这与节页脚不同。)

    默认情况下,
    UITableView
    tableFooterView
    属性为
    nil
    。因此,只需创建按钮,然后执行以下操作:

    self.tableView.tableFooterview = btn;
    

    对于所有未来的旅行者,我只需设置
    .userInteraction=true
    (Swift),它就像一个符咒。总而言之:

    tableView.backgroundView = constructMyViewWithButtons()
    tableView.backgroundView!.userInteraction = true
    

    好的,我尝试不隐藏我的tableView,我看到我的图像正在单元格0中创建。这是否意味着我的视图控制器是tableviewcontroller?我不确定是否要将其保留在该单元格中并对其进行自定义,因为我不希望按钮可滚动。您的类是从UITableViewController还是UIViewController继承的?如果来自UITableViewController,则它是一个UITableViewControllerOh,因此它是一个UITableViewController,因此您无法隐藏它。现在唯一的方法是将第一个单元格设置为文本和图像。但因为它在第一个单元格中是特定的,所以它将不可滚动