Tag: uiviewcontroller

如何在Swift中为UIViewController子类创build自定义初始化程序?

如果之前已经问过这个问题,我已经search了很多东西,很多答案都是从早些时候的Swifttesting中发现的。 我似乎无法find明确的答案。 我想要UIViewController子类,并有一个自定义的初始化,以便我可以很容易地在代码中设置它。 我在Swift中遇到了麻烦。 我想要一个init()函数,我可以使用它来传递一个特定的NSURL然后使用视图控制器。 在我看来,它看起来像init(withImageURL: NSURL) 。 如果我添加该函数,然后要求我添加init(coder: NSCoder)函数。 我相信这是因为它在超类中使用required关键字进行标记? 所以我必须在子类中做到这一点? 我添加它: required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } 怎么办? 我的特殊初始化程序被认为是一个convenience吗? 指定的一个? 我是否要调用一个超级初始化程序? 来自同一个类的初始化器? 如何将我的特殊初始化程序添加到UIViewController子类?

Swift – 以编程方式导航到另一个视图控制器/场景

在从第一个视图控制器导航到第二个视图控制器时,我收到了一条错误消息。 我的编码是这样的 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 0x318a8801 0x318a8529 0x318a8299 0x318a8231 […]

如何以编程方式调用View Controller?

我已经看过了我能find的所有教程,但我仍然没有答案。 我需要从代码调用另一个视图。 我正在使用UIStoryboards 。 我已经通过从UIButtons拖拽来多次改变视图,但是现在它必须来自代码。 我试图从主菜单调用信息页,如果这是用户第一次打开应用程序。 但是,我似乎无法find从代码中更改视图的方法。 我的所有视图都由相同的文件( ViewController2 )控制。 我的主菜单的identifier是ViewControllerMain ,信息页面的identifier是ViewControllerInfo 。 首先我试过这个: [ViewControllerMain presentViewController: ViewControllerInfo animated:YES completion: NULL]; 然后我试着为每个UIViewControllers做不同的UIViewControllers ,并说: [ViewController2 presentViewController: ViewController animated:YES completion: NULL]; 都没有工作。 对于第一个,它说: 使用未声明的标识符ViewControllerMain。 在第二个,它说: 意外的接口名称“ViewController”:预期的标识符。 我能做什么?

viewController与故事板的自定义init方法

即时通讯有困难重写我的Storyboard中devise的CustomViewController的初始化方法。 现在即时通讯(在我的mainViewController): self.customViewController = [[UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil] instantiateViewControllerWithIdentifier:@"CustomVC"]; self.customViewController.myObject = someObject; 我有viewDidLoad(CustomViewController) [self.label setText:self.myObject.someString]; 这工作正常。 但是,这是正确的方法吗? 我应该添加一个自定义的init方法(或覆盖)到我的CustomViewController? 像initWithObject:? 我不知道如何调用我的自定义init方法而不是UIStoryboard instantiateViewControllerWithIdentifier:而我没有得到调用init或initWithNibName 。 也许我应该使用: – (id)initWithCoder:(NSCoder *)decoder 。 请给我一些build议! 谢谢!

将视图控制器从一个故事板移动或复制到另一个

我有一个故事板中的几个UIViewControllers 。 现在我想将一些UIViewControllers移动到另一个Storyboard。 可能吗?

如何以编程方式在UINavigationController中按“返回”button

我有一个名为FriendsViewController UINavigationController内的UIViewController 。 第二个叫做FriendsDetailedViewController UIViewController 。 从第一个视图控制器导航到第二个时,我想以编程方式在需要时按下“ Backbutton。 这个怎么做?

Swift:自定义ViewController初始值设定项

你如何添加自定义初始化器到Swift中的UIViewController子类? 我创build了一个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 :)' 我读过的地方,当添加一个自定义的初始化,还必须重写init(coder aDecoder:NSCoder)所以让我们重写该init ,看看会发生什么: override init(coder aDecoder: NSCoder) { super.init(coder: aDecoder); } 如果我添加这个,Xcode抱怨self.leftVC is not initialized at super.init call 。 所以我想这也不是解决scheme。 所以我想知道如何将自定义初始化器正确地添加到Swift中的ViewController子类(因为在Objective-C中,这似乎不成问题)?

视图控制器:如何以编程方式在视图之间切换?

简而言之:我想有两个全屏视图,我可以在视图A和视图B之间切换。我知道我可以使用Tab Bar Controller,但我不想。 我想看看这是如何完成的,以了解引擎盖下正在发生的事情。 我有一个UIViewController充当根控制器: @interface MyRootController : UIViewController { IBOutlet UIView *contentView; } @property(nonatomic, retain) UIView *contentView; @end contentView被连接到一个UIView,我把它作为子视图的子视图添加到Nib的“视图”中。 这有绿色,我看到它全屏。 工作正常。 然后,我几乎以同样的方式创build了另外两个视图控制器。 ViewControllerA和ViewControllerB。 ViewControllerA具有蓝色背景,ViewControllerB具有黑色背景。 只要看看哪一个是活跃的。 所以,在myRootController的实现中,我这样做: // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. – (void)viewDidLoad { [super viewDidLoad]; ViewControllerA *vcA = [[ViewControllerA alloc] initWithNib]; [self.contentView addSubview:vcA.view]; […]

从导航堆栈中删除viewcontrollers

我有一个导航堆栈,说5个UIViewControllers。 我想通过点击第五个viewcontroller中的一个button来删除堆栈中的第三个和第四个viewcontroller。 是否有可能做到这一点? 如果这样怎么样?

调用addChildViewController之后,我必须调用addSubview吗?

我试图创build一个容器视图控制器使用iOS5和新的方法,如addChildViewController 。 调用addChildViewController之后,是否必须调用addSubview ? 在调用removeChildViewController之前,我必须调用removeFromSuperview吗? 我在苹果文档中没有看到任何关于此的信息。 你怎么看?