【问题标题】:how can i add a view in tableView using interface builder如何使用界面生成器在 tableView 中添加视图
【发布时间】:2015-05-12 20:33:30
【问题描述】:

嗨,我正在学习 iOS 编程。

我想知道如何使用界面生成器。

我制作了一个 tableViewController 并制作了 .xib 文件

现在我可以在界面生成器中看到 UITableView。

我必须添加一个名为 myView 的视图,其中包含按钮、标签等。

我想将 myView 设置在 tableView 区域的顶部,比如 tableview 的标题。

所以我创建了一个 myView,并添加按钮、标签等。

然后我将该视图拖到 UITableView 中。好的,这很好。

我可以看到 myView 在界面生成器中设置在 UITableView 的顶部。

但我运行程序,myView 没有出现。

当然是使用 IBOutlet 进行连接,并声明属性和综合。

但我像这样使用 NSLog

if(self.myView == nil)
   NSLog(@"omg it's nil!!!");

我无法理解 NSLog 打印在我的提示区。

因为我在界面生成器中制作了该视图!

我可以看到tableView,当然可以看到单元格。

为什么 myView 没有出现??

我该如何解决它??

我想知道如何使用界面生成器修复它。

请帮帮我

【问题讨论】:

    标签: iphone objective-c ios xcode interface-builder


    【解决方案1】:

    不确定是否可以使用界面生成器,我通常手动创建一个视图并将其添加到 viewWillAppear 方法中的 tableview 标题中,如下所示:

        UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.bounds.size.width, 60)];  
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 10,self.tableView.bounds.size.width, 50)];
        label.text = [person getFullName];
        label.textAlignment = UITextAlignmentCenter;
        label.backgroundColor = [UIColor clearColor];
        label.font = [UIFont boldSystemFontOfSize:25];
        label.shadowColor = [UIColor whiteColor];
        label.shadowOffset = CGSizeMake(0,1);
        [headerView addSubview:label];
    
        self.tableView.tableHeaderView = headerView;
    

    更简单的方法是在单独的 nib 文件中创建一个视图,然后在加载 tableview 时将其加载到表头中,如下所示:

    UIViewController *aViewController = [[UIViewController alloc] initWithNibName:@"MYXIBFILEHERE" bundle:nil];
    self.tableView.tableHeaderView = aViewController.view;
    

    【讨论】:

      【解决方案2】:

      我对 XCode 4.3 的体验:

      你必须首先将 UITableView 和 UIView 放在同一个超级 UIView 上。然后,当将 UIView 拖到 UITableView 的顶部时,您会注意到 XCode 突出显示了将视图作为页脚插入的选项。

      完成后,您可以从 superview 中分离 UITableView 并将其删除。

      【讨论】:

        【解决方案3】:

        我能够让它工作的唯一方法如下:

        1. 将新的 nib 文件添加到项目中。像你一样在 nib 文件中布置视图 希望您的表格页脚/页眉看起来。
        2. 将 nib 中文件所有者的类别设置为您的类别 UITableViewController。这样我们就可以连接这个视图 nib 到 UITableViewController 类中的 IBOutlet。
        3. 在你的 UITableViewController 中设置一个 UIView IBOutlet 指向 在新笔尖中查看。
        4. 在您的 UITableViewController 类中,在 viewDidLoad:

        (如果直接在编号列表之后,显然代码格式不正确。)

        [[NSBundle mainBundle] loadNibNamed:@"statsFooterView" owner:self options:nil];
        self.tableView.tableFooterView = myFooterView;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-31
          • 1970-01-01
          • 1970-01-01
          • 2017-12-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多