继承的视图控制器不会在块#ICETutorial中解除它自己

时间:2014-04-05 14:16:10

标签: ios objective-c uiviewcontroller uinavigationcontroller objective-c-blocks

我正在使用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中的原因是我不希望SettingsViewController知道Tutorial2ViewController如何工作。设置应该是alloc和init,推送到导航控制器堆栈,Tutorial2ViewController应该知道如何处理自己。

我确实按下了按钮1的NSLog,但是视图控制器没有自行解除并返回到SettingsViewController。

我会联系图书馆的创建者并要求他/她也看到这个问题。我觉得这不是我对误块,导航控制器,cocoapods等的误解......

由于

1 个答案:

答案 0 :(得分:1)

试试[self.navigationController popViewControllerAnimated:YES];