のサブクラスを作成しました。UITableViewCellです。今までは、私がセグメントを設定できるストーリーボードで「設計」されたセルしか使用していませんでした。UITableViewCellのサブクラスを分離する方法は?
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
[super prepareForSegue:segue sender:sender];
NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];
if ([[segue identifier] isEqualToString:@"showNews"]) {
NewsViewController *newsViewController = [segue destinationViewController];
News *news = (News*)[self.fetchedResultsController objectAtIndexPath:indexPath];
newsViewController.news = news;
}
}
私はのUITableViewCellの私のサブクラスを作成した後、私は、もはや右、カスタムセルのseguesを作成するためにストーリーボードを使用することができますよ!私はストーリーボードにセルを作成し、そのクラスを自分のカスタムクラスに設定しようとしましたが、アプリケーションを実行するとセルは空白になります。
はので、代わりに私はただのallocだと私tableView:cellForRowAtIndexPath
でカスタムセルを初期化:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"WSTableViewCell";
WSTableViewCell *cell = (WSTableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[WSTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
WSObject *item = [self.fetchedResultsController objectAtIndexPath:indexPath];
[cell.titleLabel setText:item.title];
return cell;
}
次にtableView:didSelectRowAtIndexPath
で、私は、NewsViewControllerを作成しようとしてニュース項目を設定し、navigationControllerにプッシュしています:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
News* news = [self.fetchedResultsController objectAtIndexPath:indexPath];
NewsViewController *newsViewController = [[NewsViewController alloc] init];
newsViewController.news = news;
[[self navigationController] pushViewController:newsViewController animated:YES];
}
しかし、私は、行を選択したときに、私のNewsViewControllerが示されていない - 代わりに、私は黒い背景の空のビューを参照してください。私はこれにどのように対処できますか?それでもそれは可能ですか?
ありがとうございました! – dhrm
なぜ 'super'コールが必要ないのですか? –
あなたは '[super prepareForSegue:...]'を意味しますか?私はあなたがそれを行う必要はないと思うb/c 'UIViewController'の実装は何もしません。あなた自身の 'UIViewController'サブクラスをサブクラス化し、その' prepareForSegue'実装も使いたい場合は、その時に 'super'を呼び出さなければなりません。 – barley