代码之家  ›  专栏  ›  技术社区  ›  Mihir Oza

从一个VC的按钮呈现到另一个VC使swrevealviewcontroller找到nil

  •  0
  • Mihir Oza  · 技术社区  · 6 年前

    我有个问题 swrevealviewcontroller公司 得到 ,
    请看我下面的解释。

    说明:

    我的两个屏幕有两个菜单 VIEW1 , VIEW2 . VIEW1 是一个表格视图,我在其中使用了自定义单元格,我在自定义单元格中添加了一个按钮。
    所以,当我点击那个按钮时,它会跳到 VIEW2 ,但滑块导航不起作用。
    因为 SWRevealViewController *revealViewController = self.revealViewController; 得到 在里面 VIEW2

    这是我写在 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;
    }
    

    如果有人能帮我解决这个问题,那就太好了。

    提前谢谢。
    米希尔奥扎

    2 回复  |  直到 6 年前
        1
  •  0
  •   CodeChanger    6 年前

    您可以在下面的TabLVIEW DeDestReStuw方法中传递您的坐标:

    - (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。

        2
  •  0
  •   Mihir Oza    6 年前

    迟到的回答,
    在帕特里克的帮助下,我解决了这个问题。

    在我的表视图控制器中:

        - (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