【问题标题】:Inherited view controller will not dismiss itself in a block #ICETutorial继承的视图控制器不会在块中关闭自己#ICETutorial
【发布时间】:2014-04-05 14:16:10
【问题描述】:

我正在使用 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 的工作原理。设置应该分配和初始化,推送到导航控制器堆栈,Tutorial2ViewController 应该知道如何处理自己。

我确实得到了按钮 1 被按下的 NSLog,但视图控制器不会自行关闭并将我返回到 SettingsViewController。

我会联系图书馆的创建者并请他/她也看看这个问题。感觉这不是我对积木、导航控制器、cocoapods等的误解……

谢谢

【问题讨论】:

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


    【解决方案1】:

    试试 [self.navigationController popViewControllerAnimated:YES];

    【讨论】:

      猜你喜欢
      • 2021-02-15
      • 1970-01-01
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多