0

DetailDisclosureButtonがタッチ/押されたときに表示するUIViewController(ストーリーボードを使用して構築されたGUI)を取得しようとしています。画面上のボタンが1つだけの、非常にシンプルなGUIを作成しました。私はそれにカスタムクラスを与えNFLGameDetailsController、ストーリーボードでは他に何もしませんでした。

次に、クラスNFLGameDetailsControllerから継承したという名前のクラスを作成しましたUIViewController

UIViewControllerこれは、クラスから継承するときにXcodeによって生成されるコードです。

#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

ビューではなく、クラスのみをインスタンス化しているためです。

コードから別のビューをロードしたい場合は、この方法で行うことができます

まず、ストーリーボードエディタでストーリーボードIDをビューコントローラに割り当てます(例: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 に答える