Questions tagged «uiviewcontroller»

UIViewController类管理iOS应用程序中的视图,并介导应用程序的视图,其基础模型对象和整个工作流之间的交互。


4
Swift:自定义ViewController初始化程序
如何UIViewController在Swift的子类中添加自定义初始化程序? 我创建了一个UIViewController类似于以下内容的子类: class MyViewController : UIViewController { init(leftVC:UIViewController, rightVC:UIViewController, gap:Int) { self.leftVC = leftVC; self.rightVC = rightVC; self.gap = gap; super.init(); setupScrollView(); setupViewControllers(); } } 当我运行它时,出现致命错误: 致命错误:对类“ MyApp.MyViewController”使用未实现的初始化程序“ init(nibName:bundle :)” 我读过elewhere,添加自定义初始化程序时还必须覆盖它,init(coder aDecoder:NSCoder)所以让我们覆盖它init,看看会发生什么: override init(coder aDecoder: NSCoder) { super.init(coder: aDecoder); } 如果添加此代码,Xcode会抱怨self.leftVC is not initialized at super.init call。所以我想那也不是解决方案。所以我想知道如何ViewController在Swift中的子类中正确添加自定义初始化程序(因为在Objective-C中这似乎不是问题)?

4
dismissModalViewController并将数据传回
我有两个视图控制器,firstViewController和secondViewController。我正在使用此代码切换到我的secondViewController(我也向其传递了一个字符串): secondViewController *second = [[secondViewController alloc] initWithNibName:nil bundle:nil]; second.myString = @"This text is passed from firstViewController!"; second.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; [self presentModalViewController:second animated:YES]; [second release]; 然后,我在secondViewController中使用以下代码切换回firstViewController: [self dismissModalViewControllerAnimated:YES]; 所有这些都很好。我的问题是,如何将数据传递给firstViewController?我想将不同的字符串从secondViewController传递到firstViewController中。

4
为什么我不能在Swift中的UIViewController上调用默认的super.init()?
我不是UIViewController从情节提要中使用a ,而是要有一个自定义init函数,可以在其中传递NSManagedObjectID某些对象的。我只想像super.init()在Objective-C中一样打电话。像这样: init(objectId: NSManagedObjectID) { super.init() } 但是我收到以下编译器错误: 必须调用超类UIViewController的指定初始化程序 我可以不再这样做吗?

6
模态视图控制器-如何显示和关闭
在过去的一周中,我为解决如何显示和关闭多个视图控制器来解决此问题而烦恼不已。我创建了一个示例项目,并直接从项目中粘贴代码。我有3个视图控制器及其相应的.xib文件。MainViewController,VC1和VC2。我在主视图控制器上有两个按钮。 - (IBAction)VC1Pressed:(UIButton *)sender { VC1 *vc1 = [[VC1 alloc] initWithNibName:@"VC1" bundle:nil]; [vc1 setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; [self presentViewController:vc1 animated:YES completion:nil]; } 这将打开VC1,没有任何问题。在VC1中,我有另一个按钮应该打开VC2,同时关闭VC1。 - (IBAction)buttonPressedFromVC1:(UIButton *)sender { VC2 *vc2 = [[VC2 alloc] initWithNibName:@"VC2" bundle:nil]; [vc2 setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; [self presentViewController:vc2 animated:YES completion:nil]; [self dismissViewControllerAnimated:YES completion:nil]; } // This shows a warning: Attempt to dismiss from …

7
在另一个视图控制器中将视图控制器添加为子视图
我没有找到有关此问题的帖子,但没有一个帖子解决了我的问题。 就像我说的那样。 ViewControllerA ViewControllerB 我试图将ViewControllerB添加为ViewControllerA中的子视图,但是它抛出类似“ fatal error: unexpectedly found nil while unwrapping an Optional value”的错误。 下面是代码... ViewControllerA var testVC: ViewControllerB = ViewControllerB(); override func viewDidLoad() { super.viewDidLoad() self.testVC.view.frame = CGRectMake(0, 0, 350, 450); self.view.addSubview(testVC.view); // Do any additional setup after loading the view. } ViewControllerB只是一个带有标签的简单屏幕。 ViewControllerB @IBOutlet weak var test: …

19
检测何时关闭呈现的视图控制器
假设我有一个名为VC2的视图控制器类的实例。在VC2中,有一个“取消”按钮将自行关闭。但是,当“取消”按钮被触发时,我无法检测到或接收任何回调。VC2是一个黑匣子。 视图控制器(称为VC1)将使用presentViewController:animated:completion:方法呈现VC2 。 VC2被关闭时,VC1必须检测哪些选项? 编辑:从@rory mckinnel的评论和@NicolasMiari的答案,我尝试了以下操作: 在VC2中: -(void)cancelButton:(id)sender { [self dismissViewControllerAnimated:YES completion:^{ }]; // [super dismissViewControllerAnimated:YES completion:^{ // // }]; } 在VC1中: //-(void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion - (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^ _Nullable)(void))completion { NSLog(@"%s ", __PRETTY_FUNCTION__); [super dismissViewControllerAnimated:flag completion:completion]; // [self dismissViewControllerAnimated:YES completion:^{ // // }]; } 但是dismissViewControllerAnimatedVC1中的未被调用。

21
如何使用presentModalViewController创建透明视图
我正在显示一个模态视图 [self presentModalViewController:controller animated:YES]; 当视图在屏幕上移动时,根据创建它的xib文件中的设置是透明的,但是一旦填充屏幕,它就会变得不透明。 无论如何,要保持视图透明? 我怀疑正在放置的视图没有被渲染,而是模态视图变得不透明。



19
以编程方式导航到另一个视图控制器/场景
从第一个视图控制器导航到第二个视图控制器时收到错误消息。我的编码就是这样 let vc = LoginViewController(nibName: "LoginViewController", bundle: nil) self.navigationController?.pushViewController(vc, animated: true) 问题是我总是收到这种错误消息 2014-12-09 16:51:08.219 XXXXX[1351:60b] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/FDC7AA0A-4F61-47E7-955B-EE559ECC06A2/XXXXX.app> (loaded)' with name 'LoginViewController'' *** First throw call stack: (0x2efcaf0b 0x39761ce7 0x2efcae4d 0x31b693f9 0x31ac1eaf 0x3191e365 0x317fe895 0x318a930d 0x318a9223 …


6
显示和关闭模态视图控制器
谁能给我示例代码,我可以使用该示例代码首先呈现一个模态视图控制器,然后将其关闭?这就是我一直在尝试的: NSLog(@"%@", blue.modalViewController); [blue presentModalViewController:red animated:YES]; NSLog(@"%@", blue.modalViewController); [blue dismissModalViewControllerAnimated:YES]; NSLog(@"%@", blue.modalViewController); 这段代码在viewDidLoad中(“ blue”和“ red”都是UIViewController的子类)。我希望我将显示红色视图,然后立即将其隐藏起来,并带有一些动画。但是,这段代码仅呈现模态视图,而不会将其忽略。任何的想法?第一个日志显示“空”,而其他两个日志显示<RedViewController: 0x3d21bf0> 另一点是,如果将这段代码放在applicationDidFinishLaunching中:红色视图根本不会出现,并且所有日志都为“ null”

9
从视图控制器到自身的情节提要Segue
我正在尝试建立一种机制来向下钻取文件/文件夹列表。想法是每次用户选择一个文件夹时都显示相同的文件列表视图控制器,并且如果他/她选择了一个文件,则显示文件详细信息视图控制器。 到目前为止,我已经创建了从文件列表视图控制器到文件详细信息视图控制器的序列,以及从文件列表表视图单元到文件列表表视图控制器的序列: 问题在于,一旦用户点击单元格,就会执行segue。我想从表视图单元格中删除序号,并从文件列表视图控制器中将其自身设置为一个。这样,当用户点击单元格时,我可以通过编程方式触发正确的选择。 因此,我的问题是:是否可以在Interface Builder中从视图控制器创建到自身的序列?

8
如何将UIViewController的视图添加为子视图
请注意,Google的质量检查已过期六年了! 就像下面的Micky和其他人提到的那样,现在可以每天在iOS中使用Containers完成此操作。 我有一个ViewController,它控制许多子视图。当我单击一个按钮时,我初始化了另一个viewcontroller并将其视图显示为该视图的子视图。但是,子视图超出了子视图框架的范围,并且实际上填充了整个屏幕。 有什么事吗 我认为问题是UIViewController的视图有一个框架(0,0,320,460),因此充满了整个屏幕(尽管只有在子视图框架范围内被触摸时,它才会接收触摸事件)。如何调整框架的大小以适合子视图。 简而言之,我需要帮助,将一个视图控制器的视图作为子视图添加到另一个视图控制器的视图中。 谢谢!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.