2

在我的应用程序中,我使用故事板。我在故事板中的元素之一是 UITableViewController。所以它里面有一个tableview。

我的问题是如何在这个 tableview 上放置一个 UIView。它将被隐藏,我想在按下 tableview 中的 tableviewcell 时使其可见。那可能吗?我怎样才能做到这一点?

4

5 回答 5

7

最好的解决方案是在 StoryBoard 中使用普通视图控制器 (UIViewController)。您的控制器将需要实现两个协议(UITableViewDataSource 和 UITableViewDelegate),并且您需要在视图控制器的视图中添加 UITablewView。

在这种情况下,在界面生成器中,您将能够将任何视图放在视图控制器的视图中(可以将其放在表视图上方)。

于 2013-02-12T10:48:01.913 回答
1

使用 tableHeaderView 属性。

返回显示在表格上方的附件视图。

@property(nonatomic, retain) UIView *tableHeaderView

表头视图不同于节头。

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableView_Class/Reference/Reference.html

于 2013-02-11T15:27:41.597 回答
0

让我们假设您的视图隐藏/显示在表视图顶部是 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;
    }

}

希望能帮助到你。

于 2013-02-11T15:38:14.000 回答
0

你也可以看到前面。

[view bringsubviewtofront];
于 2013-02-12T10:42:50.533 回答
0

我有一个类似的问题,我想在我的 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]; 
        }
于 2013-07-22T07:35:04.457 回答