xcode IBOutlet UITableView 在 View 加载后为 null
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/6724461/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
IBOutlet UITableView is null after View did load
提问by Rene Koller
Here's the basic code (based on Xcode's Tabbed Applicaion Template)
这是基本代码(基于 Xcode 的选项卡式应用程序模板)
ViewController.h
视图控制器.h
@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
@property (nonatomic,retain) NSMutableArray *movies;
@property (nonatomic,retain) IBOutlet UITableView *tableView;
ViewController.m
视图控制器.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);
}
Output
输出
tableView = (null)
The TableView is connected to File's owner in IB with class is set to ViewController
TableView 连接到 IB 中的文件所有者,类设置为 ViewController
I really don't get why the tableView is null. I'm not a complete newbie to Cocoa (but to the iPhone SDK), I created a Single View based Application with a TableView dataSource to see if I was missing something. I got it working in under a minute.
我真的不明白为什么 tableView 为空。我不是 Cocoa 的完全新手(而是 iPhone SDK),我使用 TableView 数据源创建了一个基于单视图的应用程序,看看我是否遗漏了什么。不到一分钟我就搞定了。
Anybody can help out?
有人可以帮忙吗?
回答by Paul.s
In interface builder right click File's Owner
and ensure that the following connections are made:
在界面生成器中右键单击File's Owner
并确保进行以下连接:
Outlets
tableView - Table View
Referencing Outlets
dateSource - Table View
delegate - Table View
I suspect you may have not made the first connection?
我怀疑你可能没有建立第一次连接?
回答by auco
Make sure the nib/xib is included in your current target.
确保 nib/xib 包含在您当前的目标中。
I just experienced this issue on Xcode5 with iOS7 SDK. Strangely enough, I discovered that the nib wasn't included in my target anymore. I don't know when and why that happened, but it had this strange side effect that most IBOutlets weren't set up properly, even if all connections from code to nib/xib were fine.
我刚刚在带有 iOS7 SDK 的 Xcode5 上遇到了这个问题。奇怪的是,我发现笔尖不再包含在我的目标中。我不知道发生这种情况的时间和原因,但它有一个奇怪的副作用,即大多数 IBOutlets 没有正确设置,即使从代码到 nib/xib 的所有连接都很好。
For example: my MKMapView *map
was in my list of subviews on viewDidLoad:
, but the IBOutlet MKMapView *map
property in my view controller was still nil. After I ticked the "include in target" checkbox, everything worked as expected.
例如: myMKMapView *map
在我的子视图列表中viewDidLoad:
,但IBOutlet MKMapView *map
我的视图控制器中的属性仍然是nil。在我勾选“包含在目标中”复选框后,一切都按预期工作。