2015-07-10 60 views
1

我有三個按鍵和一個UIView(我稱之爲containerView),點擊每個按鈕時,containerView將顯示通過自定義賽格瑞在UIViewController視圖,按鈕使用一個IBAction方法(switchView ),我把這三個按鈕放在一個叫做navButtonsIBOutletCollection; 和viewDidLoad我打電話switchView使containerView顯示第一個視圖控制器。IOS定製Segue公司和ContainerView

代碼運行良好,沒有錯誤,唯一的問題是當我點擊第一個按鈕時,第一個UIViewController將顯示在containerView,UIImageView(按鈕,標籤等)應該在屏幕的中心,但它在第一次加載時從不像這樣,當我點擊另一個按鈕時,再次點擊第一個按鈕,它的行爲如預期, 我不知道發生了什麼,第一次加載和再次點擊它們之間的區別是什麼。 是否有任何我在代碼中遺漏?

我不擅長英語,對不起有什麼不清楚的。

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.availableIdentifier = [[NSMutableArray alloc] initWithObjects:@"Seg1",@"Seg2",@"Seg3", nil]; 


    [self switchView:self.navButtons[0]]; 
} 

- (IBAction)switchView:(UIButton *)sender 
{ 

    [self setSelectedIndexs:(int)sender.tag]; 

} 

- (void)setSelectedIndexs:(int)index 
{ 

    [self performSegueWithIdentifier:self.availableIdentifier[index] sender:self.navButtons[index]]; 

} 

//Code of Custom Segue: 
-(void)perform 
{ 
    ViewController *controller = (ViewController *)self.sourceViewController; 
    UIViewController *destController = (UIViewController *)self.destinationViewController; 
    for (UIView *view in controller.containerView.subviews) 
    { 
     [view removeFromSuperview]; 
    } 

    controller.currentController = destController; 
    [controller.containerView addSubview:destController.view]; 

    [controller.containerView setTranslatesAutoresizingMaskIntoConstraints:NO]; 


    [destController didMoveToParentViewController:controller]; 
} 

回答

2

我認爲你應該加上:

destController.view.frame = controller.containerView.frame; 

前 controller.currentController = destController;

+0

是的,這是重點,需要多做一點:將destController.view.frame的y設置爲0;感謝你的回答; –

0

是在UIViewController中設置的clipSubViews嗎?

+0

設置。不起作用。 –

0

已解決。感謝Bojan Bozovic的回答;

CGRect frame = controller.containerView.frame; 
frame.origin.y = 0; 
destController.view.frame = frame; 

在controller.currentController = destController之前添加上面的內容;