我在显示UITableView的应用程序中创建了一个视图。几乎所有时间都会显示结果(显然),但是当它没有任何结果时,我想显示另一个视图,通知用户他/她如何填充表格。
我想在界面构建器中设计该视图。我将不得不检查代码中的数据源是否为空以在两个不同的笔尖之间切换。如何实例化和配置在Interfacebuilder中创建的视图?
答案 0 :(得分:0)
执行此操作的简单方法是通常在xib中添加视图并使其可见 设计你的两个视图,表视图和另一个视图,给tableView一个111的标签,并给另一个视图另一个标签222,例如
现在在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;
}
答案 1 :(得分: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;
}
答案 2 :(得分:0)
其他答案为您提供了可能的技术解决方案,但我建议如果您使用标准的Apple设计指南,您可能甚至不需要担心它。例如,在屏幕的某个位置,您应该有一个标签为“添加”的条形按钮项(显示加号图标)。然后,不要给出如何添加项目的长(通常很差的本地化)描述,只需要一个空白部分的标题,其中说“没有项目”用任何复数名词替换项目适合您的表格项目。例如,对于我正在研究的与射箭相关的应用程序:
注意编辑按钮当前是如何被禁用的,因此不需要解释,因为此时他们唯一能做的就是点击添加按钮(Appstore上的屏幕截图将显示他们在此之后可以看到的内容点)。