0

我有一个幻灯片菜单。它是使用组件实现的SWRevealViewController。为了实现它,我有 1 个 main UIViewController( VC) - SWRevealViewController。我有菜单 VC,我必须push segues导航到不同的菜单 VCs

对于菜单,我为每个菜单使用带有自定义类的原型单元。

我的问题是我需要打电话unwind segue登录 VC,使用alert view. 为此,我尝试从(单元格的内部自定义类)获得[self performSegueWithIdentifier:@"unwSegReturnToLogin" sender:self];肯定回答的常用方法。我在我的登录中声明了这样的方法。我在编译过程中收到错误:alert viewexit VC

No visible @interface for 'tvcellExitMenuItem' declares 
the selector 'performSegueWithIdentifier:sender:'

我怀疑问题是self在我的情况下是table cell,而不是UIViewController

VC如果是这种情况,如何推荐父母?

如果没有,请告诉我我在逻辑上哪里错了。

4

1 回答 1

3

子视图不必知道其父视图控制器。相反,适合您需要的常见模式是委托模式:为您的单元格类定义委托属性和协议。

// your cell class header might look like this

@class MyCellClass;
@protocol MyCellDelegate

- (void)onCellSelected:(MyCellClass *)cell;

@end

@interface MyCellClass

@property (nonatomic, weak) id<MyCellDelegate> delegate;

@end

例如,如果您的 viewController 也是您的UITableViewDatasource,那么tableView:cellForRowAtIndexPath:您可以将单元格的委托设置为self,并在委托方法中调用 segue 方法。

- (void)onCellSelected:(MyCellClass *)cell
{
    // retrieve cell indexPath
    NSIndexPath *cellIndexPath = [self.tableView indexPathForCell:cell];

   // using indexPth, retrieve cell's data

   // push segue with data selected
}

当然,这只是一个例子,还有其他更正的方法可以做到这一点。

于 2015-05-11T09:57:54.140 回答