Speak now
Please Wait Image Converting Into Text...
Embark on a journey of knowledge! Take the quiz and earn valuable credits.
Challenge yourself and boost your learning! Start the quiz now to earn credits.
Unlock your potential! Begin the quiz, answer questions, and accumulate credits along the way.
General Tech Bugs & Fixes 2 years ago
Posted on 28 Aug 2022, this text provides information on Bugs & Fixes related to General Tech. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.
Turn Your Knowledge into Earnings.
I have a unit test and I want to create a subclass version of an UIViewController, for example Test1ViewController. Specifically, I want to override the present method for this class.
UIViewController
Test1ViewController
present
I have a view controller extension which instantiates a view controller, depending on its class name.
public class func instanceFromStoryboard<T>(storyboard: Storyboard) -> T { return UIStoryboard(name: storyboard.rawValue, bundle: nil).instantiateViewController(withIdentifier: String(describing: T.self)) as! T }
And a Storyboard class.
public enum Storyboard: String { case main = "Main" }
In my unit test, I created a subclass from Test1ViewController.
class Test2ViewController: Test1ViewController { var presented: Bool = false override func present(_ viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Void)? = nil) { presented = true } }
How can I use my extension method to retrieve the view controller from the storyboard, and then downcast / subclass to Test2ViewController?
Test2ViewController
Because objects in storyboards are actually encoded objects, they can't be decoded and cast to anything else. This is a drawback of using storyboards. What you put in a storyboard is what you get out.
If you can, use a XIB-based view controller instead of a storyboard-based one. With XIBs (and with programmatic view controllers), tests can instantiate subclasses.
If not, then you'll need to introduce a back door to your view controller. This would be unfortunate, as it means mixing test code into your production code.
No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.
General Tech 9 Answers
General Tech 7 Answers
General Tech 3 Answers
General Tech 2 Answers
Ready to take your education and career to the next level? Register today and join our growing community of learners and professionals.