0

我在应用程序中创建了一个显示 UITableView 的视图。它几乎总是会充满结果(显然),但是当它没有任何结果时,我想显示另一个视图,告知用户他/她如何填充表格。

我想在 interfacebuilder 中设计该视图。我必须在代码中检查数据源是否为空,以便在两个不同的 nib 之间切换。如何实例化和配置在 Interfacebuilder 中创建的视图?

4

3 回答 3

0

最简单的方法是在xib中添加视图并使其可见

现在在viewDidLoad

获取两个视图

UIView *noDataView = [self.view viewWithTag:222];
UITableView *tableView = [self.view viewWithTag:111];
//Hide both of them or only the noDataView until you know if you have data from the dataSource or not

检查您的数据源

//hasElements do you have any element to show?
if(hasElements)
{
    noDatView.hidden = YES;
    tableView.hidden = NO;
}
else
{
    noDatView.hidden = NO;
    tableView.hidden = YES;
}
于 2012-06-18T07:51:07.723 回答
0

您可以根据条件加载nib文件。您可以编写如下类别:

self.view = (UIView *)[self loadNib:@"SecondView" inPlaceholder:self.view];

- (UIView *)viewFromNib:(NSString *)nibName
{
    NSArray *xib = [[NSBundle mainBundle] loadNibNamed:nibName owner:self options:nil]; 
    for (id view in xib) { // have to iterate; index varies
        if ([view isKindOfClass:[UIView class]]) return view;
    }
    return nil;
}

- (UIView *)loadNib:(NSString *)nibName inPlaceholder:(UIView *)placeholder
{
    UIView *nibView = [self viewFromNib:nibName];
    [nibView setFrame:placeholder.frame];
    self.view = nibView;
    //[self.view insertSubview:nibView aboveSubview:placeholder];
    //[placeholder removeFromSuperview];
    return nibView;
}
于 2012-06-18T07:53:06.223 回答
0

其他答案为您提供了可能的技术解决方案,但我建议如果您使用标准的 Apple 设计指南,您可能甚至不需要担心。例如,在屏幕上的某处,您应该有一个带有标识符“Add”(显示加号图标)的条形按钮项。然后,不要对如何添加项目进行冗长(通常本地化程度不高)的描述,而只需为一个空白部分设置一个标题,上面写着“没有项目”,用任何适合您的表项目的复数名词替换项目。例如,对于我正在开发的射箭相关应用程序:

带有明显条形按钮项的空表视图

请注意编辑按钮当前是如何被禁用的,因此无需解释,因为此时他们唯一能做的就是点击添加按钮(Appstore 上的屏幕截图将向他们展示他们在此之后可以看到的内容)。

于 2012-06-18T08:04:20.417 回答