> On 4 Dec 2015, at 14:45, Stevo Brock <[email protected]> wrote: > > I’m trying to set up a UIViewController than can host a number of different > UIViews as long as they adhere to a given protocol. I’ve worked through > getting things set up to make the compiler happy, but I’m getting a runtime > error loading the view controller from the storyboard. Below is the relevant > code. > > How do I specify the class in the storyboard so it will load correctly? Or > perhaps there’s a different way to construct this all so it will work? > > protocol MediaItemView { > } > > class PhotoMediaItemView : UIImageView, MediaItemView { > } > > class VideoMediaItemView : VideoPlayerView, MediaItemView { > } > > class MediaItemViewController<T where T: UIView, T: MediaItemView> : > UIViewController { > private var currentMediaItemView :T? > } > > > let mediaItemViewController = > > self.storyboard?.instantiateViewControllerWithIdentifier("MediaItemViewController") > as! > MediaItemViewController<VideoMediaItemView> > > Storyboard has a view controller with the Class set to > "MediaItemViewController" > > 2015-12-03 22:07:23.966 Media Tools[14143:276368] Unknown class > _TtC11Media_Tools23MediaItemViewController in Interface Builder file. > Could not cast value of type 'UIViewController' (0x10d1dfd60) to > 'Media_Tools.MediaItemViewController<Media_Tools.PhotoMediaItemView>' > (0x1193fc038).
I don’t see how that would work. IB needs a fully specified class in order to instantiate it, you just have the name of the generic. At the least you need MediaItemViewController<VideoMediaItemView> but I’m not even sure that would work. The error message is indeed telling you that no such class as MediaItemViewController exists, because it doesn’t, only specialised versions of it actually exist (you can probably dump your binary to see what they are called, I don’t know the mangled naming convention for generics) _______________________________________________ Cocoa-dev mailing list ([email protected]) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to [email protected]
