我已经创建了的子类UITableViewCell。到目前为止,我只使用在故事板中“设计”的单元,在那里我可以设置segues。如何seque 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的子类,我不再能够使用故事板创建自定义单元格塞格斯,右后?我试图在故事板中创建一个单元格,并将其类设置为我的自定义类 - 但是,当我运行该应用程序时,该单元格只是空白。
所以不是我只是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没有显示 - 但相反,我看到一个黑色背景的空白视图。我该如何处理这个问题?是否仍然可以使用seques?
谢谢你的解决方案! – dhrm 2012-02-01 14:23:21
为什么不需要“超级”呼叫? – 2013-10-02 18:41:06
你的意思是'[超级准备赛:']'?我认为你不必这样做b/c UIViewController的实现没有任何作用。如果你继承自己的'UIViewController'子类,并且想要使用它的'prepareForSegue'实现,那么你必须在那个时候调用'super'。 – barley 2013-10-02 19:53:45