2013-04-02 2 views
2

В AppDelegate мы создаем DetailView, а затем loginView (UIModalPresentationFullScreen). После входа в систему loginView уволен.UISplitViewController - detailView не показывает

DetailView имеет tableView и при выборе ячейки/ряда и 2-го detailView нажата.

То, что я сделал до сих пор: В AppDelegate я прошу UI_USER_INTERFACE_IDIOM() и когда идиома iPad я создать splitView:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
{ 
    FirstDetailViewController* fdvc = [[FirstDetailViewController alloc] initWithNibName:@"FirstDetailViewController" bundle:nil]; 
    SecondDetailViewController* sdvc = [[SecondDetailViewController alloc] initWithNibName:@"SecondDetailViewController" bundle:nil]; 

    UINavigationController* fdvcNavigationController = [[UINavigationController alloc] initWithRootViewController:fdvc]; 
    UINavigationController* sdvcNavigationController = [[UINavigationController alloc] initWithRootViewController:sdvc]; 

    splitViewController = [[UISplitViewController alloc] init]; 
    splitViewController.viewControllers = [NSArray arrayWithObjects:fdvcNavigationController, sdvcNavigationController, nil]; 

После Войти мой LoginView уволен и мой UISplitViewController показано, с 1-го DetailView с левой стороны (мастер). Так что все пошло нормально.

Теперь я хожу в FirstDetailViewController.m и поиск didSelectRowAtIndexPath, потому что я нахожу pushView к SecondDetailViewController в «iPhone версии».

И вот где я застрял. Я пробовал несколько уроков SplitView и читал проблемы других относительно splitview.

Но я думаю, что моя проблема - это своего рода «базовая», потому что я новичок в программировании/iOS вообще и не знаю всех моих инструментов.

Любая помощь будет оценена по достоинству.

+0

Вы установили делегат splitviewcontroller? –

+0

Я пробовал это с: splitViewController.delegate = [splitViewController.viewControllers lastObject]; – MathewB83

+0

Где у вас есть ваши методы делегирования UISplitViewController? обычно это должен быть ваш мастер, назначить делегата вашему хозяину. –

ответ

3

При написании приложений с целью таблицы и некоторые другие рода «отображения» вид для элементов в таблице, я делаю это так, он работает на обоих устройствах:

// In App Delegate... 
-(BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

    // Create views 
    MyTableViewController* myTable = [[MyTableViewController alloc] init]; 
    MyDetailViewController* myDetail = [[MyDetailViewController alloc] init]; 
    UINavigationController* tableNav = [[UINavigationController alloc] initWithRootViewController:myTable]; 
    UINavigationController* detailNav = [[UINavigationController alloc] initWithRootViewController:myDetail]; 

    // Check device type 
    if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) { 

     // Use a split view 
     UISplitViewController* splitView = [[UISplitViewController alloc] init]; 
     split.viewControllers = @[tableNav, detailNav]; 
     self.window.rootViewController = split; 

    } else { 

     // Use a single view for iPhone 
     self.window.rootViewController = tableNav; 

    } 

} 

.

// In table view 
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    // Check device type 
    if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) { 

     // Tell the already visible detail view to load something 
     MyData* data = ...; \\ Get your thing to display however you want 
     [[NSNotificationCenter defaultCenter] postNotificationName:@"DisplayMyData" object:data]; 

    } else { 

     // No detail controller exists yet, so create it 
     MyDetailViewController* myDetail = [[MyDetailViewController alloc] init]; 
     [self.navigationController pushViewController:myDetail animated:YES]; 
     [[NSNotificationCenter defaultCenter] postNotificationName:@"DisplayMyData" object:data]; 

    } 

} 

.

// In detail view 
-(void) viewDidLoad { 
    [super viewDidLoad]; 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(displayData:) name:@"DisplayMyData" object:nil]; 

} 

-(void) displayData:(NSNotification*)notify { 

    MyData* data = (MyData*) notify.object; 

    ... // Display however... 

} 
+0

thanks @ jjv360 ! Я пробовал это по-своему, и теперь он работает именно так, как я хотел, в первую очередь. :) – MathewB83