2013-11-25 30 views
2

我已創建主細節應用程序與多個細節視圖控制器通過替換segue連接到分割視圖。在橫向一切工作正常,但在縱向方向我失蹤按鈕來打開主人表視圖和刷屏在屏幕左側不工作,並沒有打開應用程序的主方。缺少「主」按鈕和刷卡手勢不工作主/細節ios

編輯:

在我DetailViewController我有兩個方法,相同的Xcode中的主 - 從應用程序提供的模板:

#pragma mark - Split view 

- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController 
{ 
    barButtonItem.title = NSLocalizedString(@"MasterButton", @"Master"); 
    [self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES]; 
    self.masterPopoverController = popoverController; 
} 

- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem 
{ 
    // Called when the view is shown again in the split view, invalidating the button and popover controller. 
    [self.navigationItem setLeftBarButtonItem:nil animated:YES]; 
    self.masterPopoverController = nil; 
} 

編輯2: 在改變我detailViewController,我也改變了委託。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    UIViewController *destinationViewController = [segue destinationViewController]; 
    if ([destinationViewController conformsToProtocol:@protocol(UISplitViewControllerDelegate)]) { 
     self.splitViewController.delegate = (id)destinationViewController; 
    } 
    else { 
     self.splitViewController.delegate = nil; 
    } 
} 

編輯3: 我終於通過增加每DetailViewController這行代碼,我創建瞭解決我的問題:

self.splitViewController.delegate = self; 
+1

我認爲你必須檢查你的故事板上的限制。 – Greg

+0

你是什麼意思?我從模板複製粘貼DetailViewController併爲7個不同的表項創建了7個不同的副本。 – lugonja

回答

0

你需要把barButtonItem

- (void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)pc

詳細視圖控制器的導航欄。

+0

看我的編輯。我已經實現了willHideViewController和willShowViewController,但仍然沒有按鈕.. – lugonja

+0

你試過在willHideViewController裏設置breapoint嗎? –

+0

是的,來自DetailViewController(xCode中的模板)的方法在斷點處停止,但在MyDetailViewController上,不會觸發斷點。 – lugonja

2

1)這是欄按鈕:

- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController 
{ 

    self.popoverController = popoverController; 

    barButtonItem.title = NSLocalizedString(@"List", @"List"); 

    [self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES]; 

    self.masterPopoverController = popoverController; 
} 

2),如果你想添加的UIButton然後嘗試以下:

- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController 
{ 

    self.popoverController = popoverController; 

    UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom]; 
    [btn setImage:[UIImage imageNamed:@"list.png"] forState:UIControlStateNormal]; 
     //[btn setImage:[UIImage imageNamed:@"list.png"] forState:UIControlStateHighlighted]; 
    [btn setFrame:CGRectMake(0, 0, 50, 30)]; 
    [btn addTarget:barButtonItem.target action:barButtonItem.action forControlEvents:UIControlEventTouchUpInside]; 

    self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc]initWithCustomView:btn]; 
    self.masterPopoverController = popoverController; 

} 
+0

偉大的工作給我..謝謝:) – iSwaroop