1

1 本指のパン ジェスチャで、右側にパネルを 1 つ作成することに成功しました。i ユーザーが 2 本指ジェスチャーを使用してスワイプするときに、同じ側に別のビュー コントローラーを表示する必要があります。これを SWRevealViewController.h クラス ファイルに追加しようとしましたが、機能しません。私は2つの異なるシークとsw_rightとsw_testを作成しました..ユーザーが1本の指をスワイプするとSW_rightシークのビューコントローラーが表示され、ユーザーが2本の指シークをスワイプするとSW_testセグエが表示されます。助けてください私はここで打たれました。以下は私のコードです

static NSString * const SWSegueRearIdentifier = @"sw_rear";
static NSString * const SWSegueFrontIdentifier = @"sw_front";
static NSString * const SWSegueRightIdentifier = @"sw_right";
static NSString * const SWSegueRightIdentifier2 =@"sw_test"; // mytest

- (void)prepareForSegue:(SWRevealViewControllerSegue *)segue sender:(id)sender
{
    // $ using a custom segue we can get access to the storyboard-loaded rear/front view controllers
    // the trick is to define segues of type SWRevealViewControllerSegue on the storyboard
    // connecting the SWRevealViewController to the desired front/rear controllers,
    // and setting the identifiers to "sw_rear" and "sw_front"

    // $ these segues are invoked manually in the loadView method if a storyboard
    // was used to instantiate the SWRevealViewController

    // $ none of this would be necessary if Apple exposed "relationship" segues for container view controllers.

    NSString *identifier = segue.identifier;
    if ( [segue isKindOfClass:[SWRevealViewControllerSegue class]] && sender == nil )
    {
        if ( [identifier isEqualToString:SWSegueRearIdentifier] )
        {
            segue.performBlock = ^(SWRevealViewControllerSegue* rvc_segue, UIViewController* svc, UIViewController* dvc)
            {
                [self _setRearViewController:dvc animated:NO];
            };
        }
        else if ( [identifier isEqualToString:SWSegueFrontIdentifier] )
        {
            segue.performBlock = ^(SWRevealViewControllerSegue* rvc_segue, UIViewController* svc, UIViewController* dvc)
            {
                [self _setFrontViewController:dvc animated:NO];
            };
        }
        else if ( [identifier isEqualToString:SWSegueRightIdentifier] )
        {
            segue.performBlock = ^(SWRevealViewControllerSegue* rvc_segue, UIViewController* svc, UIViewController* dvc)
            {
                [self _setRightViewController:dvc animated:NO];
            };
        }
        //mytest code
        **else if ( [identifier isEqualToString:SWSegueRightIdentifier2] )
        {
            segue.performBlock = ^(SWRevealViewControllerSegue* rvc_segue, UIViewController* svc, UIViewController* dvc)
            {
                [self _setRightViewController:dvc animated:NO];
            };
        }**
        //code test

    }
}
4

1 に答える 1

0

最後に、2つのパネルを持つソリューションを手に入れました。実行されたタッチに基づいて 2 つの異なるデータを表示するために 1 つのコントローラーを使用しました。ここで私がしたこと。私はこのコードを公開ビューコントローラーに書きました

-(void)viewWillAppear:(BOOL)animated
{
     int numberofTouches =  self.revealViewController.panGestureRecognizer.numberOfTouches;
    NSLog(@"%d",numberofTouches);
    if (numberofTouches ==1) {
        numberOfTouchesString=@"One";
    }
    else if (numberofTouches==2)
    {
        numberOfTouchesString=@"Two";
    }
    [learningSearchTableView reloadData];

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if ([numberOfTouchesString isEqualToString:@"One"]) {
        return 6;
    }
    else if ([numberOfTouchesString isEqualToString:@"Two"])
    {
        return 5;
    }
    else
        return 0;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"selected");
    if ([numberOfTouchesString isEqualToString:@"One"]) {
        NSLog(@"%@",indexPath);

    }
    else if ([numberOfTouchesString isEqualToString:@"Two"])
    {
        NSLog(@"The other %@",indexPath);
    }

}
 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"learningSearchCellIdentifier";
    LearningSearchCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];


    if ([numberOfTouchesString isEqualToString:@"One"]) {
      cell.subjectNameLabel.text=@"ART";
        cell.subjecDataAndSessionLabel.text=@"Friday 11th April - LS3(Cohort 11)";
        cell.teacherNameLabel.text=@"Mr Starr";

    }
    else if ([numberOfTouchesString isEqualToString:@"Two"])
    {
        cell.subjectNameLabel.text=@"English";
        cell.subjecDataAndSessionLabel.text=@"Sunday 12th April - LS3(Cohort 11)";
        cell.teacherNameLabel.text=@"Mr Harry";


    }
    return cell;


}
于 2014-06-30T11:44:41.547 に答える