1

我最近开始了 iOS 开发,目标是创建一个登录视图。我遇到了我认为可以完成这项工作的 QuickDialog。在他们的示例中,他们提供了以下代码:

QRootElement *root = [[QRootElement alloc] init];
root.title = @"Hello World";
root.grouped = YES;
QSection *section = [[QSection alloc] init];
QLabelElement *label = [[QLabelElement alloc] initWithTitle:@"Hello" Value:@"world!"];

[root addSection:section];
[section addElement:label];

UINavigationController *navigation = [QuickDialogController controllerWithNavigationForRoot:root];
[self presentModalViewController:navigation animated:YES];

看起来代码创建了一个专门的控制器来加载自定义视图。我不确定在哪里添加这段代码,所以我将它添加到我的 viewDidLoad 中,用于故事板中的原始启动视图。但是,情节提要中的视图会在显示由 QuickDialog 创建的视图之前显示片刻。

我想知道,如何修改应用程序,以便 QuickDialogController 获得的控制器在应用程序启动时加载其视图。我希望使用 QuickDialog 创建一个登录表单。这个登录视图会出现在故事​​板的某个地方吗?

4

3 回答 3

2

只是为了解决这个问题,这里有一个通过继承 QuickDialogController 在情节提要中使用 QuickDialog 的完整示例:

// MyController.h
@interface MyController : QuickDialogController
@end


// MyController.m
#import "MyController.h"

@interface MyController ()
@end

@implementation MyController

- (void)viewDidLoad
{
    self.root = [[QRootElement alloc] init];
    self.root.title = @"Hello World";
    self.root.grouped = YES;
    QSection *section = [[QSection alloc] init];
    QLabelElement *label = [[QLabelElement alloc] initWithTitle:@"Hello" Value:@"world!"];

    [self.root addSection:section];
    [section addElement:label];

    [super viewDidLoad];
}

@end
于 2012-11-13T19:38:57.593 回答
2

当情节提要在 initWithCoder 中创建控制器时,您必须设置分组选项,这意味着您必须在那里创建 QRootElement:

  1. 在您的 MyController 类实现中添加以下代码:

    -(id) initWithCoder:(NSCoder *)aDecoder {
        if ((self = [super initWithCoder:aDecoder])) {
            QRootElement *_root = [[QRootElement alloc] init];
            _root.grouped = YES;
            self.root = _root;
        }
        return self;
    }
    
  2. 然后继续自定义viewDidLoad中引用self.root的元素列表

于 2013-09-14T15:04:13.220 回答
1

所以一切正常,但您不想显示出现的快速对话框登录表单的动画?尝试animated:NO在最后一行设置。

QuickDialog 的设计目的不是真正从 Storyboard 中使用,尽管您可以通过创建一个继承自 QuickDialogController 的控制器来做到这一点。

于 2012-07-16T18:56:33.573 回答