0

私のアプリでは、splitViewController の左側のテーブルビューで、連絡先を一覧表示しています。連絡先をクリックすると、その連絡先 ID が detailViewController に渡されます。そして、detailViewController の viewDidLoad メソッドで、Web サービスにヒットし、その連絡先 ID の連絡先の詳細を取得して、detailViewController に表示するメソッドを呼び出しています。これがロジックです。しかし、tableViewのクリックでdetailViewControllerを呼び出すのに問題があります。テーブルビューをクリックすると、DetailViewController の ViewDidLoad メソッドは呼び出されません (印刷されない detailPage の ViewDidLoad に NSlog があります)

rootViewController の didSelectRowAtIndexPath メソッドのコードを添付しました。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Navigation logic may go here. Create and push another view controller.


if([serachBar.text isEqualToString:@""] || serachBar.text == nil)
{
    NSString *ContactIdStr=[NSString stringWithFormat:@"%@",[[objectsForCharacters objectForKey:[arrayOfCharacters objectAtIndex:indexPath.section]] objectAtIndex:indexPath.row]];


    NSArray *afterSeprate = [[NSArray alloc]init];
    afterSeprate = [ContactIdStr componentsSeparatedByString:@"+"];
    //NSString *cellText = [afterSeprate objectAtIndex:0];
    NSString *detailText = [afterSeprate objectAtIndex:1];

    appdelegate.contactId=[NSString stringWithString:detailText];

}
else
{
    serachBar.text = nil;
    NSString *ContactIdStr=[NSString stringWithFormat:@"%@",[searchArray objectAtIndex:indexPath.row]];

    NSArray *afterSeprate = [[NSArray alloc]init];
    afterSeprate = [ContactIdStr componentsSeparatedByString:@"+"];
    //NSString *cellText = [afterSeprate objectAtIndex:0];
    NSString *detailText = [afterSeprate objectAtIndex:1];

    appdelegate.contactId=[NSString stringWithString:detailText];

}


// Pass the selected object to the new view controller.

detailViewController = [[DetailView_iPad alloc] initWithNibName:@"DetailView_iPad" bundle:nil];

 [detailViewController.navigationController pushViewController:detailViewController animated:YES];


//self.detailViewController.navigationController


[ContactTableview deselectRowAtIndexPath:indexPath animated:YES];

}
4

1 に答える 1

0

DetailViewControllertableview on をクリックするたびにの個別のインスタンスを呼び出す必要はありませんMasterViewController。この目的のため
に を作成する必要があります。delegateこのチュートリアルが役に立ちます。ストーリーボードを使用していますが、デリゲート部分も使用できます。

iOS での委任の詳細については、このリンクも参照してください。

于 2013-10-03T09:56:55.953 に答える