UIButton没有出现在tableview中?

时间:2014-12-08 12:23:06

标签: ios objective-c xcode

当桌子为空时,我想在我的应用程序中显示UILabel和UIButton。但是,它只显示标签。我知道这是因为我只是在视图中添加了标签。如何将按钮添加到视图中?

    UILabel *messageLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];

    messageLabel.text = @"No data is currently available. Please pull down to refresh.";
    messageLabel.textColor = [UIColor blackColor];
    messageLabel.numberOfLines = 0;
    messageLabel.textAlignment = NSTextAlignmentCenter;
    messageLabel.font = [UIFont fontWithName:@"Palatino-Italic" size:20];
    [messageLabel sizeToFit];

    UIButton *messageButton = [UIButton buttonWithType:UIButtonTypeSystem];
    [messageButton addTarget:self
                   action:@selector(aMethod:)
                   forControlEvents:UIControlEventTouchUpInside];
    [messageButton setTitle:@"Add your first service"
                   forState:UIControlStateNormal];
    messageButton.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);

    [self.tableView addSubview:messageButton];
    [self.tableView addSubview:messageLabel];

    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

4 个答案:

答案 0 :(得分:2)

应该 做的是将你的UILabel和UIButton放入你的XIB或故事板,无论是保存表视图,将它们连接到出口然后隐藏或显示它们取决于表格是否有任何条目。

但是,是的,尼克的回答也是正确的(对他而言是+1)。而不是做“self.tableView.backgroundView”,你应该做“[self.tableView addSubview:messageButton];”。

答案 1 :(得分:1)

您还没有将messageButton添加到任何视图中(或者没有在您显示的代码中添加)。

您需要以下内容:

[self.tableView addSubview:messageButton];
[self.tableView addSubview:messageLabel];

答案 2 :(得分:0)

您可以使用普通的viewController并在其中添加tableview,而不是使用tableViewController。还可以在界面中添加按钮和标签。然后根据tableview的元素将这些项设置为隐藏或不隐藏。

答案 3 :(得分:0)

最好使用viewForHeaderInSection UITableView方法,因为您的要求仅在空数据时使用,因此当数据为空时会显示,并在有数据时自动删除

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
  if([yourTblViewDataArray count] == 0)
  {
     //Add UILabel and UIButton in UIView 
     UIView *view = [[UIView alloc] init];
     //here
     return view;
  }
  else
  {
     return nil;
  }

}

必须添加HeightForHeaderInSection UITableView的{​​{1}}:

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
{ 
  //According to requirement size should vary
  if([yourTblViewDataArray count] == 0)
  {
     return 60.0f;
  }
  else
  {
     return 0.0f;
  }

}