[英]IOS Custom Segue and ContainerView
我有三個按鈕和一個UIView
(我稱之為containerView
),點擊每個按鈕, containerView
將通過自定義序列在UIViewController
顯示一個View,這些按鈕使用一個IBAction
方法( switchView
),我switchView
三個按鈕放入一個名為navButtons
的IBOutletCollection
; 在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.