SettingsViewController

SettingsViewController

我正在将ICETutorial与cocoapods一起使用。

我在SettingsViewController中使用它,您可以在其中查看设置中的教程。

// SettingsViewController.m
Tutorial2ViewController *vc = [[Tutorial2ViewController alloc] init];
[self.navigationController setNavigationBarHidden:YES animated:NO];
[self.navigationController pushViewController:vc animated:NO];


并且Tutorial2ViewController继承自ICETutorialController

@interface Tutorial2ViewController : ICETutorialController


ICETutorialPages具有将触发回调的按钮。它占用了一个街区。因此,在我的实现中,我有以下内容:

- (id)init
{
    ICETutorialPage *layer1 = [[ICETutorialPage alloc] initWithSubTitle:@"Page 1" description:@"Page 1" pictureName:@"Tutorial1_640x1136.png"];
    NSArray *tutorialLayers = @[layer1];

    self = [super initWithNibName:@"ICETutorialController_iPhone" bundle:nil andPages:tutorialLayers];

    __weak Tutorial2ViewController *vc = self;
    [self setButton1Block:^(UIButton *button){
        NSLog(@"Button 1 pressed.");
        [[vc.navigationController topViewController] dismissViewControllerAnimated:NO completion:nil];
    }];

    if (self != nil)
    {

    }
    return self;
}


我将所有代码都放在init中的原因是,我不想让SettingsViewControllerTutorial2ViewController的工作方式一无所知。设置应该分配和初始化,推送到导航控制器堆栈,而Tutorial2ViewController应该知道如何处理自身。

我确实获得了按下button1的NSLog,但视图控制器并未关闭自身,而是将我返回到SettingsViewController。

我将与图书馆的创建者联系,并请他/她也看到这个问题。我觉得这是我对误区,导航控制器,cocoapods等的理解。

谢谢

最佳答案

只需尝试[self.navigationController popViewControllerAnimated:YES];

10-08 09:24