2016-06-29 8 views
0

と呼ばれていませんが、次のとおりです。コードが示すようにいただきました私のコードで間違って、データソースのメソッドが私のコード

- (instancetype)init { 
    self = [super initWithNibName:nil bundle:nil]; 
    if (self) { 
     _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height - 20) 
                style:UITableViewStylePlain]; 

     for (int i = 0; i < 10; i++) { 
      [[LHItemSharedStore sharedStore] createItem]; 
     } 
    } 

    return self; 
} 

- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    return [self init]; 
} 

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    [self.tableView reloadData]; 

} 
- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.tableView.delegate = self; 
    self.tableView.dataSource = self; 
    [self.view addSubview:self.tableView]; 
    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"UITableViewCell"]; 

} 
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ 
    return 1; 
} 

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
    return [[[LHItemSharedStore sharedStore] items]count]; 
} 

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UITableViewCell" forIndexPath:indexPath]; 
    cell.textLabel.text = @"test"; 
    return cell; 
} 

、データソースメソッドが呼び出されません。私はviewWillAppearで [self.view addSubView:self.tableView];

を入れたときには、この方法は、あなたのテーブルので、私は[self.view addSubView:self.tableView];

+0

メソッドが呼び出されないとはどういう意味ですか?あなたのコードで判断すると、デリゲートメソッドを実装することさえできませんでした。 –

+0

私はメソッドを実装し、それを超えてはいけません。あなたの助言のおかげで、私は後者を追加します。 – stucs

+0

なぜViewControllerにinitメソッドがありますか? nibfileがnilに設定されているので、あなたは何も初期化していません –

答えて

1

あなたのコードに問題self.view = self.tableView;には、initはおそらくviewDidLoad後に呼び出されていることを変更するときにも動作しますが、正確に呼び出すことができますビューは依然としてnilです。

+0

あなたは正しいです:) – stucs

0

問題が解決しました。 私のinitメソッドでself.view.framを使用しているようですが、次にloadviewが呼び出され、viewDidLoadを呼び出し、viewDidLoadの_tableViewのinitプロセスが終了していないので、_tableViewはnilではありません。 viewDidLoadでself.view = self.tableViewを設定すると、それはutilと呼ばれます。self.tableViewはnilではありません。 benifit私はviewDidLoadにview initを置くのです。

+0

Yee、これは私が言っていたことです –

関連する問題