> 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]

Reply via email to