0

我正在尝试获取 UIViewController(使用情节提要构建的 GUI),以显示何时DetailDisclosureButton触摸/按下 a。我制作了一个非常简单的 GUI,屏幕上只有一个按钮。我给了它 Custom Class NFLGameDetailsController,在故事板上什么也没做。

然后我创建了一个NFLGameDetailsController继承自 class 的类UIViewController

这是Xcode从UIViewController类继承时生成的代码:

#import "NFLGameDetailsController.h"

@interface NFLGameDetailsController ()

@end

@implementation NFLGameDetailsController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

最后,在我的主控制器上,我添加#import "NFLGameDetailsController.h"了头文件,并实现了显示 UIViewController 的方法,如下所示:

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
    NFLGameDetailsController *controller = [[NFLGameDetailsController alloc] init];
    [[self navigationController] pushViewController:controller animated:YES];
}

正在调用此方法,一切似乎都很好,但是当我按下附件详细信息披露按钮时,出现黑屏:

为什么它没有显示我使用情节提要创建的 GUI?谢谢。

4

1 回答 1

1

这是因为您只是在实例化一个类,而不是一个视图

如果你想从代码中加载另一个视图,你可以这样做

首先,将 Storyboard ID 分配给 Storyboard 编辑器中的视图控制器(例如 NFLGameDetailsController)

然后

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
    NFLGameDetailsController *controller = (NFLGameDetailsController *)[self.storyboard instantiateViewControllerWithIdentifier:@"NFLGameDetailsController"];
    [[self navigationController] pushViewController:controller animated:YES];
}

但是您可以使用情节提要编辑器来配置您的表格视图及其单元格以加载另一个没有代码的视图

于 2012-12-23T10:51:39.213 回答