我仍然是iOS开发的新手。事实上,如果有一个超级菜鸟,我会是一个:p。目前我正在创建一个访问子视图的IBAction
按钮。我有2个ViewControllers,AddClientVC
和NewClientVC
,都有.nib文件。基本上,在我的AddClientVC中,我使用以下代码实现IBAction
按钮:
- (IBAction)buttonPressed:(id)sender
{
UIView *transparentBG = [[UIView alloc] initWithFrame:CGRectMake(-5, -5, 1500, 2500)];
transparentBG.backgroundColor = [UIColor blackColor];
transparentBG.opaque = NO;
transparentBG.alpha = 0.5;
[self.view addSubview:transparentBG];
transparentBG.center = transparentBG.center;
vc = [[NewClientVC alloc] initWithNibName:@"NewClientVC" bundle:nil];
[self.view addSubview:vc.view];
vc.view.center = self.view.center;
}
正如您所看到的,我将UIView实现为透明背景。基本上AddClientVC - >透明背景 - > NewClientVC。现在我已经创建了另一个IBAction按钮,但这次在NewClientVC中作为一个函数来解除被访问的子视图,如下所示:
- (IBAction)saveDismiss:(id)sender
{
[self.view removeFromSuperview];
}
我现在遇到的问题是,当我点击saveDismiss按钮时,它只删除我之前在AddClientVC上调用的子视图,但它没有删除我创建的透明背景UIView
。所以问题是如何实现一个同时删除我的子视图和我创建的UIView
透明背景的动作。
我需要得到所有帮助:)
答案 0 :(得分:0)
我不太确定我完全明白你想要发生什么,但也许你可以尝试这样的事情?
- (IBAction)saveDismiss:(id)sender
{
[vc removeFromSuperView];
[self.view removeFromSuperview];
}
答案 1 :(得分:0)
我建议您不要通过手动添加子视图来管理您的屏幕,而是使用
- (void)presentModalViewController: (UIViewController *)modalViewController
animated: (BOOL)animated
你的root viewController上的方法。 或者更好地实例化UINavigationController并使用push和pop方法向下钻取/查看视图。 See apple reference here
答案 2 :(得分:0)
不要担心代码执行速度并对Apple的SDK保持信心。 UIKit针对最佳用户体验进行了优化。在我看来,尝试通过不恰当的SDK使用来增强代码是一种冒险的策略。 ;) - Vincent Zgueb
对不起文森特,但我不同意你的看法。我到达这里是因为我想实现一个为我的视图添加子视图的手势,这将是我的应用程序的导航。
[self.view addSubview:ctrl.view];
比
更快地呈现视图[self.navigationController presentModalViewController:ctrl animated:NO]
顺便说一句,在我的案例中,该主题的解决方案是:
[self.view sendSubviewToBack:ctrl.view];