草庐IT

viewcontroller

全部标签

ios - 使用 Swinject 有条件地将 ViewModel 注入(inject) ViewController

我正在使用Swinject来注入(inject)依赖项,到目前为止效果很好。但现在我有一个场景,其中我有一个ViewController,它依赖于它的ViewModel。ViewModel符合ViewModeling协议(protocol)并且可以是两种类型之一(两者都符合相同的协议(protocol),但具有截然不同的行为)。我想弄清楚如何注入(inject)正确的ViewModel(必须在运行时做出决定)?我注意到我可以使用Container通过name注册每个ViewModel然后使用name来区分应该注入(inject)哪个ViewModel,起初这似乎是一个很好的解决方案-直

ios - 如何将一个 ViewController 上的 UILabel 上的文本设置为从另一个 ViewController 拉取?

我在我的ThirdViewController上创建了一个名为order1label的UILabel。我希望文本根据我的SecondViewController中的决定显示在该标签上。下面是这两个ViewController的代码。当我点击SecondViewController中的SubmitUIButton时,我希望orderType更改为ThirdViewController上的Delivery,我希望这会反射(reflect)在order1label中,但事实并非如此。它仍然显示Takeout。我做错了什么?几个小时以来,我一直在寻找答案,但对于这个极其简单的问题,似乎没有简单

ios - UIApplicationDelegate 但对于每个 ViewController

我想在显示新ViewController时得到通知,UIApplicationDelegate提供了这种方式,但针对整个应用程序,而不是针对每个ViewController每次出现新的ViewController时是否都会调用任何委托(delegate)?注意事项我完全了解UIViewController中的功能,但我问的是与ViewController本身分离的委托(delegate),例如ApplicationDelegate我的尝试我搜索了很多,我想到的唯一解决方案是扩展ViewController,然后让我的ViewController继承这个新的ViewController,

swift - 从不同的 Storyboard实例化 ViewController 时应用程序崩溃

我正在用Swift3(最新的Xcode)编写我正在控制,如果用户已登录(异步任务检查设备和数据库之间的参数)。如果响应显示设备无效,我将显示登录屏幕。看起来像这样:extensionUIViewController{funcforceLogin(){letstoryboard=UIStoryboard(name:"Login",bundle:nil)letcontroller=storyboard.instantiateViewController(withIdentifier:"LoginViewController")letnavController=UINavigationCon

ios - 呈现新的 ViewController 后取消初始化 UITabBarController

我有一个用户可以登录的应用程序。如果用户启动该应用程序并且已经登录,则rootViewController设置为我的自定义UITabBarController但是当用户未登录rootViewController设置为LoginVC(ViewController)。我的问题是,当用户注销时,应该显示LoginVC并且应该取消初始化TabBar。我试过:self.tabBarController?.dismiss(animated:true,completion:{self.tabBarController?.present(LoginVC(),animated:true,completi

ios - ViewController 对象为 nil

我有2个ViewController。1.ViewController(VC)2.WebViewController(WVC)在VC中,我单击一个按钮并显示WVC。在成功完成WVC中的所有任务后,我想显示VC并在VC中执行特定功能。现在,Storyboard包含一些对象并通过单击和拖动添加到VC。最初,它有一些值(不是零)。我单击按钮,推送WVC,完成WVC中的所有任务后,VC被推送。现在VC中有些值是nil。错误,欢迎(UILabel,UIView)为零...而且也是想在VC中调用一个函数。怎么可能?代码ViewController.swiftclassLoginController

ios - 无法控制将引用对象拖到 Xcode 9.2 (9C40b) iOS 项目中的 ViewController

如何在连接到我的swiftViewController代码的Storyboard上为iOS控件创建导出?所有iOS开发教程都表明您可以控制将UI元素拖动到socket的ViewContollerswift代码。然而它对我来说从来没有用过,它显示了Storyboard中的蓝线,但在下降时它永远不会弹出对话框来添加一个新的socket。创建一个新的Action拖放对按钮来说效果很好。我看到很多人问这个问题,似乎没有明确的答案。iOS项目有什么不同吗?我尝试将ViewController自定义类设置为我的特定ViewController类,然后我可以拖放一个新socket。但是,该项目无法编

ios - 关闭 ViewController 不会在 Swift 中释放内存

我有一个ViewController(我们称之为TableViewController)。当用户点击自定义UITableViewCell中的按钮时,将打开一个新的ViewController(我们称之为DetailViewcontroller)。当用户点击DetailViewController内的后退按钮时,我调用了dismiss函数,TableViewController再次打开。我的问题是,当我执行这种情况50次时,内存使用率会更高。所以我猜它不会进行任何重新分配。我如何打开DetailViewController;@objcfuncvoteBtnTapped(_sender:U

ios - viewController.view 未添加到父 View Controller 内的自定义 View

我想将childViewController添加到parentViewController的自定义UIView部分。但是,如果我正在做self.customView.addSubview(childViewController.view)我看不到childViewController.view因为它没有被添加。相反,如果我执行self.view.addSubview(childViewController.view)一切正常。有人可以解释为什么会这样吗?我确实需要将childViewController.view添加为customView的subview,而不是作为self.view的

ios - 以编程方式推送 ViewController

我正在尝试以编程方式推送ViewController。代码:varplus=UIButton()plus.addTarget(self,action:#selector(plusPressed),for:.touchUpInside)@objcfuncplusPressed(){print("plus")letcreateJournalVC=CreateJournalViewController()self.navigationController?.pushViewController(createJournalVC,animated:true)}什么有效:按下按钮后,“加号”会打印