在我的应用程序中,我使用故事板。我在故事板中的元素之一是 UITableViewController。所以它里面有一个tableview。
我的问题是如何在这个 tableview 上放置一个 UIView。它将被隐藏,我想在按下 tableview 中的 tableviewcell 时使其可见。那可能吗?我怎样才能做到这一点?
在我的应用程序中,我使用故事板。我在故事板中的元素之一是 UITableViewController。所以它里面有一个tableview。
我的问题是如何在这个 tableview 上放置一个 UIView。它将被隐藏,我想在按下 tableview 中的 tableviewcell 时使其可见。那可能吗?我怎样才能做到这一点?
最好的解决方案是在 StoryBoard 中使用普通视图控制器 (UIViewController)。您的控制器将需要实现两个协议(UITableViewDataSource 和 UITableViewDelegate),并且您需要在视图控制器的视图中添加 UITablewView。
在这种情况下,在界面生成器中,您将能够将任何视图放在视图控制器的视图中(可以将其放在表视图上方)。
使用 tableHeaderView 属性。
返回显示在表格上方的附件视图。
@property(nonatomic, retain) UIView *tableHeaderView
表头视图不同于节头。
让我们假设您的视图隐藏/显示在表视图顶部是 topView,声明为全局变量。将 .h 中的 topView 声明为
UIView *topView;
现在让我们假设你有 UITableViewController 对象作为 tableViewController 然后,在 tableViewController 类的 viewDidLoad 中初始化 topView
-(void)viewDidLoad
{
topView=[[UIView alloc] initWithFrame:yourNeededFrameSize];
[self.tableView addSubview:topView];//tableView is a property for UITableViewController inherited class
topView.hidden=YES;//Hide it initially for the first time.
}
假设您在这里实现了 UITableViewDelegate 方法,您将在 didSelectRowAtIndexPath 中执行此操作
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(topView.isHidden==YES)
{
topView.hidden=NO;
}
else
{
topView.hidden=NO;
}
}
希望能帮助到你。
你也可以看到前面。
[view bringsubviewtofront];
我有一个类似的问题,我想在我的 UITableViewController 上添加一个加载指示器。为了解决这个问题,我将 UIView 添加为窗口的子视图。这解决了问题。我就是这样做的。
-(void)viewDidLoad{
[super viewDidLoad];
//get the app delegate
XYAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
//define the position of the rect based on the screen bounds
CGRect loadingViewRect = CGRectMake(self.view.bounds.size.width/2, self.view.bounds.size.height/2, 50, 50);
//create the custom view. The custom view is a property of the VIewController
self.loadingView = [[XYLoadingView alloc] initWithFrame:loadingViewRect];
//use the delegate's window object to add the custom view on top of the view controller
[delegate.window addSubview: loadingView];
}