ios - 继承的 View Controller 不会在 block 中自行解散#ICETutorial

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

我正在使用 ICETutorial与 cocoa 足类。

我在 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 具有将触发回调的按钮。它需要一个 block 。所以在我的实现中,我有这个:

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

我确实得到了 button1 被按下的 NSLog,但是 View Controller 并没有自行关闭并将我返回到 SettingsViewController。

我会联系库的创建者并让他/她也看到这个问题。我感觉这不是我对blocks, navigation controllers, cocoapods等的误解...

谢谢

最佳答案

试试 [self.navigationController popViewControllerAnimated:YES];

关于ios - 继承的 View Controller 不会在 block 中自行解散#ICETutorial,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22882035/

相关文章:

ios - 移动到 Root View Controller 而不显示 subview

ios - 旋转后键盘延伸高度不正确

iphone - 每次我的应用程序从后台进入前台时显示 IOS Default.png

ios - 如何以编程方式更改 UICollectionView 的大小?

objective-c - 我需要调用[super viewDidUnload]吗?

objective-c - 匿名类别或 "private"类别是否相同?

ios - 如何在 Swift 中将 UIViewController 添加到 UIScrollView

swift - 构建计算器,无法将数字添加到显示面板

objective-c - "Drag ' n ' Drop"游戏动画

objective-c - 无法在屏幕上获取 AVPlayerLayer 中的视频大小