按下DetailDisclosureButton上显示UIViewController

时间:2012-12-22 22:09:40

标签: objective-c xcode storyboard xcode-storyboard

我正在尝试获取一个UIViewController(使用storyboard构建的GUI),以显示触摸/按下DetailDisclosureButton的时间。我做了一个非常简单的GUI,屏幕上只有一个按钮。我给了它自定义类NFLGameDetailsController,并且在故事板上没有做任何其他事情。

然后我创建了一个名为NFLGameDetailsController的类,该类继承自类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?感谢。

1 个答案:

答案 0 :(得分:1)

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

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

首先,将Storyboard ID分配给Storyboard编辑器中的viewcontroller(例如NFLGameDetailsController)

然后

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

但您可以使用storyboard编辑器配置您的tableview及其`单元格以加载另一个没有代码的视图