gpt4 book ai didi

ios - 如何通过工具栏按钮替换容器 View ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:06:36 25 4
gpt4 key购买 nike

我想创建一个 UI,其中有一个导航栏及其按钮,下方有一个工具栏,两者始终可见。然后我想要一个底部的工具栏,当您点击一个按钮时,它将替换屏幕中间可见的内容。我会使用 UITabBarController 但我不想要下方的文本标签或图标的图像 - 按钮将是一个 unicode 字符。它们应该是灰色的,然后在选择一个时用色调填充。我在想这样做的方法是在点击按钮时应用色调,但由于条形按钮没有粘性的“选定状态”,我不确定该怎么做。

我也不确定如何替换中间的内容。我在想我应该创建一个容器,然后从每个将 performSegueWithIdentifier 的按钮创建一个操作方法到将包含不同内容的不同容器。但是只能嵌入一个 View Controller ——我不能从容器中创建多个 segues。我基本上是在尝试模拟一个带有较小按钮、没有标签的标签栏 Controller ,并且不会在点击按钮时替换屏幕上的全部内容。

我该怎么做呢?我想在 Interface Builder 中完成基本布局,但当然需要一些代码。谢谢!

这基本上是我想要实现的目标: enter image description here

最佳答案

这是我过去的做法。代码位于自定义容器 Controller 中,该 Controller 是嵌入在 Storyboard的容器 View 中的 Controller 。因此,在 viewDidAppear: 中,我将第一个 Controller 添加为子 Controller ,并在单击按钮时调用 switchToNewView:。

@implementation ContainerController


- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
UIViewController *initial = [self.storyboard instantiateViewControllerWithIdentifier:@"InitialVC"];
[self addChildViewController:initial];
[self.view addSubview:initial.view];
self.currentController = initial;
[self constrainViewEqual:self.currentController];
}

-(IBAction)switchToNewView {
UIViewController *sub = [self.storyboard instantiateViewControllerWithIdentifier:@"SubstituteVC"];
[self addChildViewController:sub];
sub.view.frame = self.view.bounds;
[self moveToNewController:sub];
}

-(void)moveToNewController:(UIViewController *) newController {
[self.currentController willMoveToParentViewController:nil];
[self transitionFromViewController:self.currentController toViewController:newController duration:.6 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{}
completion:^(BOOL finished) {
[self.currentController removeFromParentViewController];
[newController didMoveToParentViewController:self];
self.currentController = newController;
[self constrainViewEqual:self.currentController];
}];
}

constrainViewEqual 是我用于向 Controller View 添加约束的类别方法。看起来像这样,

-(void)constrainViewEqual:(UIViewController *) vc {
[vc.view setTranslatesAutoresizingMaskIntoConstraints:NO];
NSLayoutConstraint *con1 = [NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeCenterX relatedBy:0 toItem:vc.view attribute:NSLayoutAttributeCenterX multiplier:1 constant:0];
NSLayoutConstraint *con2 = [NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeCenterY relatedBy:0 toItem:vc.view attribute:NSLayoutAttributeCenterY multiplier:1 constant:0];
NSLayoutConstraint *con3 = [NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeWidth relatedBy:0 toItem:vc.view attribute:NSLayoutAttributeWidth multiplier:1 constant:0];
NSLayoutConstraint *con4 = [NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeHeight relatedBy:0 toItem:vc.view attribute:NSLayoutAttributeHeight multiplier:1 constant:0];
NSArray *constraints = @[con1,con2,con3,con4];
[self.view addConstraints:constraints];
}

关于ios - 如何通过工具栏按钮替换容器 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22869856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com