2

同様の質問を確認しましたが、私の場合はどれもうまくいきませんでした(それらはすべて、私が持っていない関数 loadView について言及しています)。やりたいことはとても簡単だと思いますが、なぜそれが起こっているのかわかりません。

セル内のボタンを押すと、プログラムで新しいView Controllerが開きます。これが私のコードです:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    dealViewController=[[DealViewController alloc]init];
    if (indexPath.row==0){
        [self presentModalViewController:(UIViewController *)dealViewController animated:TRUE];
    }

}

そして私の他のコントローラーで:

@implementation DealViewController

- (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.
    NSLog(@"Opened");
}

これOpenedは印刷されますが、シミュレーターには黒い画面が表示されます。私もこれを試しました:

dealViewController=[[DealViewController alloc]initWithNibName:@"DealViewController" bundle: nil];

しかし、セグメンテーション違反が発生します。私は何を間違っていますか?

4

2 に答える 2

4

これを試して:

ストーリーボード用 Apple Doc

また、performSegue:withIdentifier を介して行うこともできます。

同じ良いチュートリアル

   - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"<Your StoryBoard_Name" bundle:nil];

    dealViewController=[storyboard instantiateViewControllerWithIdentifier:@"ViewController_Identifiter"];
        if (indexPath.row==0){
            [self presentModalViewController:(UIViewController *)dealViewController animated:TRUE];
        }

    }
于 2013-07-02T10:21:56.763 に答える