1

クリックされた各行は、別のView Controllerにつながります

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    if( indexPath.row == 0 ){
        titleController     = [[TitleFundraiserController alloc] initWithNibName:@"TitleFundraiserController" bundle:nil];
        [self.navigationController presentViewController:titleController animated:YES completion:nil];
    }
    if( indexPath.row == 1 ) {
        recipientController = [[RecipientController alloc] initWithNibName:@"RecipientController" bundle:nil];
        [self.navigationController presentViewController:recipientController animated:YES completion:nil];
    }
    if( indexPath.row == 2 ) {
        fundController      = [[FundingController alloc] initWithNibName:@"FundingController" bundle:nil];
        [self.navigationController presentViewController:recipientController animated:YES completion:nil];
    }
    if( indexPath.row == 3 ) {
        locationController  = [[LocationController alloc] initWithNibName:@"LocationController" bundle:nil];
        [self.navigationController presentViewController:locationController animated:YES completion:nil];
    }  
}

ただし、コンソールからこのエラーが発生し、プログラムがクラッシュすることがあります

  Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
 'Application tried to present a nil modal view controller on target <UINavigationController: 0x7c7a340>.'

なぜそう言っているのかわかりません。

以前にこの問題を経験したことがある場合は、助けてください。

ありがとう

4

2 に答える 2

1

あなたが提示すべきときにあなたはrecipientControllerあなたの声明の中で提示していますif (indexPath.row == 2)fundController

修正されたコードは次のとおりです。

if( indexPath.row == 2 ) {
        fundController = [[FundingController alloc] initWithNibName:@"FundingController" bundle:nil];
        [self.navigationController presentViewController:fundController animated:YES completion:nil];
}

recipientControllerここに表示するとnilになるため、このエラーが発生します

于 2012-07-16T19:01:59.770 に答える
1

私があなたのコードで間違っていると思う唯一のことは、presentViewController の後に、変数も解放する必要があるということです。

if ( indexPath.row == 0 ) {
            titleController     =   [[TitleFundraiserController alloc] initWithNibName:@"TitleFundraiserController" bundle:nil];
            [self.navigationController presentViewController:titleController animated:YES completion:nil];
            [titleController release];
    }

ランダムなエラーが発生する理由がわかりません。常に同じ行にあるのではありませんか?. 何が起こっているかというと、ViewControllerがペン先からロードされていないため、 が返されnilます。

于 2012-07-16T18:46:22.660 に答える