방금 객관적인 C 및 iOS 개발을 배우기 시작했으며 iPhone 앱을 iPad로 마이그레이션하는 데 어려움을 겪었습니다.iOS SplitView/Universal help needed xcode 4.2
나는 헤드 퍼스트 아이폰 & iPad 개발 2 판을 읽었지만, 7 장의 "iPad로 이전 중"은 xcode 4.2에서 구식이다. 앱은 테이블 뷰 및 세부 뷰와 함께 스플릿 뷰를 사용하는 방법을 보여주는 데모입니다.
iPhone에서 Universal로 iOS Application Target을 변경할 때 MainWindow-iPad.xib 자동 생성 기능이 있습니다. 그러나 이것은 xcode 4.2에서 나에게 일어나지 않습니다. AppDelegate에서 프로그램 적으로 splitview 컨트롤러를 만들었습니다. 여기 코드는 다음과 같습니다
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
MasterViewController *firstVC = [[[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil] autorelease];
self.secondVC = [[[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil] autorelease];
UINavigationController *firstVCnav = [[[UINavigationController alloc] initWithRootViewController:firstVC] autorelease];
UINavigationController *secondVCnav = [[UINavigationController alloc] initWithRootViewController:self.secondVC];
UISplitViewController *splitVC = [[UISplitViewController alloc] init];
splitVC.viewControllers = [NSArray arrayWithObjects:firstVCnav, secondVCnav, nil];
self.window.rootViewController= splitVC;
[self.window makeKeyAndVisible];
return YES;
}else {
MasterViewController *masterViewController = [[[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil] autorelease];
self.navigationController = [[[UINavigationController alloc] initWithRootViewController:masterViewController] autorelease];
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];
return YES;
}
}
splitview (테이블 뷰)의 왼쪽이 잘 수행되고,하지만 난이 서로 다른 행을 선택하면 변경할 수있는 권리 측면 (상세 편)을 얻을 수 없다 왼쪽. 다음은 MasterViewController 클래스에있는 코드입니다. 여기
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
AppDelegate *splitVCdetails = [[AppDelegate alloc] init];
[splitVCdetails.secondVC drinkChanged:[self.drinks objectAtIndex:indexPath.row]];
}else {
if (!self.editing) {
if (!self.detailViewController) {
self.detailViewController = [[[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil] autorelease];
}
self.detailViewController.drink = [self.drinks objectAtIndex:indexPath.row];
[self.navigationController pushViewController:self.detailViewController animated:YES];
}else {
AddDrinkViewController *editingDrinkVC = [[AddDrinkViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
editingDrinkVC.drink = [self.drinks objectAtIndex:indexPath.row];
editingDrinkVC.drinkArray = self.drinks;
UINavigationController *editingNavCon = [[UINavigationController alloc] initWithRootViewController:editingDrinkVC];
[self.navigationController presentModalViewController:editingNavCon animated:YES];
[editingDrinkVC release];
[editingNavCon release];
}
}
}
는
-(void)refreshView {
//Set up our UI with the provided drink
self.drinkTextLabel.text = [self.drink objectForKey:NAME_KEY];
self.ingredientTextBox.text = [self.drink objectForKey:INGREDIENTS_KEY];
self.directionTextBox.text = [self.drink objectForKey:DIRECTIONS_KEY];
}
-(void)drinkChanged:(NSDictionary *)newDrink {
self.drink = newDrink;
[self refreshView];
}
가 난 아무것도 명확히 할 필요가 있으면 알려 주시기 바랍니다 내가 DetailViewController 클래스에있는 코드입니다.
고맙습니다.