从一个VC的按钮出现到另一个VC使得SWrevealviewcontroller发现为零

时间:2018-06-12 07:23:50

标签: ios objective-c swrevealviewcontroller presentviewcontroller

我遇到 SWRevealViewController 的问题 nil
请参阅下面的解释。

说明:

我的2个屏幕有2个菜单 View1 View2 View1 是一个表格视图,其中我使用了自定义单元格,我在自定义单元格中添加了一个按钮。
因此,当我点击该按钮时它会跳转到 View2 ,但滑块导航不起作用。
因为 SWRevealViewController *revealViewController = self.revealViewController; View2

中获得 nil

这是我在UITableViewCell

中编写的代码
UIViewController *view = [[[UIApplication sharedApplication] keyWindow] rootViewController];
 View2* mapviewController = [view.storyboard instantiateViewControllerWithIdentifier:@"MapView"];

[view presentViewController:mapviewController animated:NO completion:^{}];

我在 View2

中编写的代码
SWRevealViewController *revealViewController = self.revealViewController;
if ( revealViewController ) {
    [self.btnMenu setTarget: self.revealViewController];
    [self.btnMenu setAction: @selector( revealToggle: )];
    [self.view addGestureRecognizer:self.revealViewController.tapGestureRecognizer];
    self.revealViewController.rearViewRevealWidth = self.view.frame.size.width - 100;
}

如果有人可以帮我解决这个问题,那将会很棒。

提前致谢。
Mihir Oza

2 个答案:

答案 0 :(得分:0)

您可以在tableViewDidSelectRow方法中传递坐标,如下所示:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    MapViewController *objMapVC = [self.storyboard instantiateViewControllerWithIdentifier:@"MapViewController"];
    objMapVC.currentCord = CLLocationCoordinate2DMake(123.12345, 23.2345);
    [self presentViewController:objMapVC animated:YES completion:^{

    }];

}

或者如果您的表格单元格中有按钮,那么请在按钮中指定索引,如下所示:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    cell.yourButton.tag = row;
    return cell;
}

现在在按钮操作中执行以下操作:

-(IBAction)btnMapClick:(UIButton *)sender{

    MapViewController *objMapVC = [self.storyboard instantiateViewControllerWithIdentifier:@"MapViewController"];
    objMapVC.currentCord = Array[sender.tag];
    [self presentViewController:objMapVC animated:YES completion:^{

    }];

}

还要在MapViewController中定义一个属性,如下所示:

@interface MapViewController : UIViewController

@property (nonatomic) CLLocationCoordinate2D currentCord;

@end

通过执行上述2步,您可以将选定的坐标传递给下一个MapVC。

答案 1 :(得分:0)

最新答案,
在帕特里克的帮助下,我解决了这个问题。

在我的表格视图控制器中:

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCell" forIndexPath:indexPath];

    // Configure the cell...
    cell.rvc = self.revealViewController;
    cell.title.text = @"Your title";

    return cell;
}  

在我的自定义单元格中:

    @interface CustomTableViewCell : UITableViewCell

    @property (nonatomic,strong) SWRevealViewController *rvc;
    @property (nonatomic,strong) IBOutlet UILabel *title;
    @property (nonatomic,strong) IBOutlet UIButton *button;

    @end  

    @implementation CustomTableViewCell

- (void)awakeFromNib {
    [super awakeFromNib];
    // Initialization code
    [self.button addTarget:self action:@selector(buttonTaped:) forControlEvents:UIControlEventTouchUpInside];
}

- (void)buttonTaped:(void *)sender {
    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"MapView"];
    [self.rvc pushFrontViewController:vc animated:YES];
}  

下面是完整链接,可能对某人有用:
Present from one VC to another