我是IOS7的新手,我正在努力拨打pushViewController
。
首先我有UINavigationController
作为根视图控制器,我有UICollectionViewController
。
在此UICollectionViewController
我还注册了UICollectionViewCell
类
[self.collectionView registerClass:[MYProductCell class]
forCellWithReuseIdentifier:@"product"];
我正在根据单元格中的用户操作尝试pushViewController
宽度详细信息视图。
使用
我没有任何问题-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
NSDictionary *product = self.products[indexPath.row];
TXDetailProductController *detailView = [[TXDetailProductController alloc] init];
detailView.product = product;
[self.navigationController pushViewController:detailView animated:YES];
}
但我想根据用户操作从UICollectionViewCell
类调用pushViewController:detailView。
有人可以给我指示吗? 提前谢谢!
答案 0 :(得分:1)
您可以发送消息。
在viewDidLoad中,您可以设置一个消息监听器:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pushDetailView:) name:@"pushDetailView" object:nil];
然后添加一个方法:
-(void) pushDetailView:(id)sender
{
// do your pushViewController
}
然后在UICollectionViewCell
当您需要推送视图时执行:
NSNotification* notification = [NSNotification notificationWithName:@"pushDetailView" object:self];
[[NSNotificationCenter defaultCenter] postNotification:notification];
侦听器应该收到该通知并调用将推送视图的pushDetailView
。您可能还需要进行一些错误检查。
您可能需要将信息传递给方法,以便了解要推送的内容。您可以将信息放在对象中并与消息一起发送。类似的东西:
NSNumber *indexPathRow = [NSNumber numberWithInt: indexPath.row];
NSNotification* notification = [NSNotification notificationWithName:@"pushDetailView" indexPathRow object:indexPathRow];
[[NSNotificationCenter defaultCenter] postNotification:notification];
然后在接收器类中,您将该信息从通知的对象中拉出来:
-(void) pushDetailView:(NSNotification*)note
{
NSNumber indexPathRow = [note object];
NSDictionary *product = self.products[[indexPathRow intValue]];
// and on with your pushViewController code
}
再次在那里进行错误检查。