Iphone 如何使用interface builder在tableView中添加视图

Iphone 如何使用interface builder在tableView中添加视图,iphone,objective-c,ios,xcode,interface-builder,Iphone,Objective C,Ios,Xcode,Interface Builder,嗨,我在学习iOS编程 我想知道如何使用界面生成器 我制作了一个tableViewController,还制作了.xib文件 现在我可以在interface builder中看到UITableView 我必须添加一个名为myView的视图,其中包含按钮、标签等 我想将myView设置为tableView区域的顶部,就像tableView的标题一样 所以我创建了一个myView,并添加了按钮、标签等 然后我将该视图拖动到UITableView中。好的,这里很好 我可以看到myView设置在inte

嗨,我在学习iOS编程

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

我制作了一个tableViewController,还制作了.xib文件

现在我可以在interface builder中看到UITableView

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

我想将myView设置为tableView区域的顶部,就像tableView的标题一样

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

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

我可以看到myView设置在interface builder中UITableView的顶部

但是我运行了这个程序,myView没有出现

当然,使用IBOutlet连接,并声明属性和合成

但是我用的是这样的NSLog

if(self.myView == nil)
   NSLog(@"omg it's nil!!!");
我不明白NSLog打印在我的提示区

因为我在interface builder中创建了该视图

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

为什么myView没有出现

我怎样才能修好它

我想知道如何使用interface builder修复它


请帮助我

不确定是否可以使用interface builder进行此操作,我通常手动创建一个视图,并将其添加到ViewWillDisplay方法中的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;

不确定是否可以使用interface builder进行此操作,我通常手动创建一个视图,并将其添加到ViewWillExample方法中的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;

我使用XCode 4.3的经验:

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


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

我对XCode 4.3的体验:

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


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

我唯一能让它工作的方法是:

将新的nib文件添加到项目中。根据需要在nib文件中布局视图 希望表的页脚/页眉看起来像。 将nib中文件所有者的类设置为 UITableViewController。这样我们就可以连接此视图中的视图 nib到UITableViewController类中的IBOutlet。 将UITableViewController中的UIView IBOutlet设置为指向 在新nib中查看。 在UITableViewController类中,在 viewDidLoad: 显然,如果代码直接在一个编号的列表之后,则无法正确格式化

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

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

将新的nib文件添加到项目中。根据需要在nib文件中布局视图 希望表的页脚/页眉看起来像。 将nib中文件所有者的类设置为 UITableViewController。这样我们就可以连接此视图中的视图 nib到UITableViewController类中的IBOutlet。 将UITableViewController中的UIView IBOutlet设置为指向 在新nib中查看。 在UITableViewController类中,在 viewDidLoad: 显然,如果代码直接在一个编号的列表之后,则无法正确格式化

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