私のアプリでは、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];
}