1

嗨,我正在学习 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 没有出现?

我该如何解决?

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

请帮我

4

3 回答 3

2

不确定这是否可以使用界面生成器,我通常手动创建一个视图并将其添加到 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;
于 2012-04-24T02:01:06.537 回答
2

我对 XCode 4.3 的体验:

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

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

于 2012-09-05T15:03:50.520 回答
0

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

  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;
于 2015-05-12T12:33:30.953 回答