这是基本代码(基于Xcode的标签应用模板)
ViewController.h
@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
@property (nonatomic,retain) NSMutableArray *movies;
@property (nonatomic,retain) IBOutlet UITableView *tableView;
ViewController.m
@implementation ViewController
@synthesize movies,tableView;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.title = NSLocalizedString(@"Watchlist", @"Watchlist");
self.tabBarItem.image = [UIImage imageNamed:@"watchlist"];
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"tableView = %@", tableView);
}
输出
tableView = (null)
TableView连接到IB中的File所有者,class设置为ViewController
我真的不明白为什么tableView为null。 我不是Cocoa的新手(但是对于iPhone SDK),我用TableView dataSource创建了一个基于Single View的应用程序,看看我是否遗漏了一些东西。我让它在一分钟内完成了工作。
有人可以帮忙吗?
答案 0 :(得分:8)
在界面构建器中,右键单击File's Owner
并确保进行以下连接:
Outlets
tableView - Table View
Referencing Outlets
dateSource - Table View
delegate - Table View
我怀疑你可能没有建立第一个连接?
答案 1 :(得分:1)
确保nib / xib包含在当前目标中。
我刚刚在Xcode5上使用iOS7 SDK遇到过这个问题。奇怪的是,我发现笔尖不再包含在我的目标中了。我不知道发生的时间和原因,但它有这种奇怪的副作用,大多数IBOutlets都没有正确设置,即使从代码到nib / xib的所有连接都很好。
例如:我的MKMapView *map
位于viewDidLoad:
的子视图列表中,但我的视图控制器中的IBOutlet MKMapView *map
属性仍为 nil 。在我勾选了#34;包含在目标&#34;复选框,一切都按预期工作。