Re: Need Help with Swift
Re: Need Help with Swift
- Subject: Re: Need Help with Swift
- From: Stevo Brock <email@hidden>
- Date: Thu, 03 Dec 2015 23:24:49 -0800
Hi Roland,
I think you’re right. The trick is - what do I put in the Storyboard such that it sticks (and IB doesn’t just change it back) and resolves at runtime?
-Stevo Brock
Owner
Sunset Magicwerks, LLC
www.sunsetmagicwerks.com
@SunsetMagicwrks
818-478-9758
> On Dec 3, 2015, at 11:17 PM, Roland King <email@hidden> wrote:
>
>
>> On 4 Dec 2015, at 14:45, Stevo Brock <email@hidden> 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@hidden)
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:
This email sent to email@hidden