3

类似于 Apple 在他们的音乐应用程序中的做法:

在此处输入图像描述

我想要一个UITableViewController,但是如果有内容,我最好只显示单元格,否则显示“无内容”消息。只需UIView在表格视图顶部放置一个?

4

3 回答 3

9

根据需要设计一个无内容视图(UIView),将该视图添加到 self.view 并将其放置在表格视图的顶部。最初将其隐藏。然后在- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section方法里面,你可以做这样的事情。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    int count = songsArray.count;

    if(count==0){
        self.noContentView.hidden = NO;
    }else{
        self.noContentView.hidden = YES;
    }

    return count;
}
于 2013-05-04T03:11:56.030 回答
2

您可以计算 tableView:numberOfRowsInSection:,并添加一个子视图(这是您的空视图,例如: imageView 或 UILabel )取决于您的count.

例如,在您的 viewDidLoad 中创建一个自定义的“空”标签

- (void)viewDidLoad
{
   [super viewDidLoad];

   _emptyView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];
   _emptyView.backgroundColor = [UIColor clearColor];

   // add en empty notes image placholder
   // when there is no data to display
   _emptyNoteImageView         = [[UIImageView alloc] initWithFrame:CGRectMake(((self.view.bounds.size.width) / 3), 50, 119, 120)];
   _emptyNoteImageView.image   = [UIImage imageNamed:@"some_empty_images"];

   _emptyLabel                 = [[UILabel alloc] initWithFrame:CGRectMake(((self.view.bounds.size.width) / 5), self.view.bounds.size.width - 150, 200, 20)];
   _emptyLabel.text            = @"No note to display";
   _emptyLabel.font            = [UIFont fontWithName:@"HelveticaNeue-Medium" size:12.0f];
   _emptyLabel.textAlignment   = NSTextAlignmentCenter;
   _emptyLabel.textColor       = [UIColor lightGrayColor];
   _emptyLabel.shadowColor     = [UIColor whiteColor];
   _emptyLabel.backgroundColor = [UIColor clearColor];

   [_emptyView addSubview:_emptyLabel];
}

然后,根据您的 numberOfRowsInSection 计数,您可以在 self.view 中添加/删除它。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{
    count = [self.dataSource count];

    if (count > 0) {
        [_emptyView removeFromSuperview];
    } else {
        [self.view addSubview:_emptyView];
    }

    return count;
}

或者简单地说,你可以使用这个类别...... https://github.com/nxtbgthng/UITableView-NXEmptyView

——希望对你有帮助!

于 2013-05-04T03:49:42.510 回答
0

假设您使用 NSMUtableArray(“数组”)填充 UITableView。

-(void)viewDidLoad
{
     [super viewDidLoad];

     UIView *noDataView = [[UIView alloc] initWithFrame:self.tableView.frame];

     UILabel *noDataLabel = [[UILabel alloc] initWithFrame:CGRectMake(50,50,100,50)];
     [noDataLabel setText:@"No Data Found"];
     [noDataView addSubview:noDataLabel];

     [noDataView setHidden:TRUE];

     array=[self fetchDataIntoArray];

     if([array count]==0)
     {
          noDataView.hidden=FALSE;
          [self.view bringSubviewToFront:noDataView];

          self.tableView.hidden = TRUE;
     }
     else
     {
          self.tableView.hidden=FALSE;
          [self.view bringSubviewToFront:self.tableView];

          noDataView.hidden = TRUE;
     }

}
于 2013-05-04T05:27:08.060 回答