簡體   English   中英

iOS自定義Segue和ContainerView

[英]IOS Custom Segue and ContainerView

我有三個按鈕和一個UIView (我稱之為containerView ),點擊每個按鈕, containerView將通過自定義序列在UIViewController顯示一個View,這些按鈕使用一個IBAction方法( switchView ),我switchView三個按鈕放入一個名為navButtonsIBOutletCollection ; viewDidLoad我調用switchView使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];
}

我認為您應該添加:

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

在controller.currentController = destController之前;

在UIViewController中設置了clipSubViews嗎?

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM