当桌子为空时,我想在我的应用程序中显示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;
答案 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;
}
}