PaoloCuscela / Cards

Awesome iOS 11 appstore cards in swift 5.
MIT License
4.2k stars 274 forks source link

IBDesignables issue wich prevents to show storyboard preview. #10

Open wqfan opened 6 years ago

wqfan commented 6 years ago

Hello, thanks for the awesome framework!

I just tried the Getting Started example. After dragging the Card into the ViewController and adding an @IBOutlet. I got an error that "Use of undeclared type 'CardHightlight'".

I installed the framework using Cocoapods. I'm new to iOS dev and I probably miss some stuff. Could you explain a bit why does this happen?

Thanks!

PaoloCuscela commented 6 years ago

Thank you very much :D Try to check the attribute inspector and make sure the "module" field is set to Cards

wqfan commented 6 years ago

Thanks for the quick response!

It's set to "Cards", but I still got this error.

screen shot 2017-10-27 at 7 37 56 am
PaoloCuscela commented 6 years ago

Got it. You have to do "import Cards" in the top of the file. I'll add this to the readme. Thank you :)

wqfan commented 6 years ago

I also tried that. But there is an error "Cannot load underlying module for 'Cards'".

wqfan commented 6 years ago

I cleaned the project and then rebuild it. "Cannot load underlying module for 'Cards'" disappears, but I still have the "Use of undeclared type 'CardHightlight'" error.

screen shot 2017-10-27 at 7 58 38 am
wqfan commented 6 years ago

Hello @PaoloCuscela, sorry for the random messages.

I just found I installed Cards 1.1 instead of the newest 1.2.3. After upgrading to the 1.2.3, the undeclared problem disappears but I got this error:

IB Designables: Failed to render and update auto layout status for ViewController (BYZ-38-t0r): dlopen(Cards.framework, 1): Library not loaded: @rpath/Player.framework/Player Referenced from: Cards.framework Reason: image not found

screen shot 2017-10-27 at 8 14 09 am
PaoloCuscela commented 6 years ago

Looks strange. I've done a test right now and all seems to work well. Try this: New xcode project Pod init Add "pod 'Cards'" Pod install Pod update Open 'project.workspace' Add UIView in storyboard Class 'CardHighlight' Module 'Cards'

wqfan commented 6 years ago

Still got the same IB Designables issue. I'm working on Xcode Version 9.0.1 (9A1004). Probably an issue with my Xcode?

screen shot 2017-10-27 at 10 00 03 am
PaoloCuscela commented 6 years ago

Can you post your sample project so I can have a look ?

wqfan commented 6 years ago

Sure! Thank you very much for your help! project.zip

PaoloCuscela commented 6 years ago

schermata 2017-10-27 alle 17 18 06

It's working fine here. I'm on 9.0.1 too ... 🤔 Maybe reinstalling XCode ?

wqfan commented 6 years ago

Thank you @PaoloCuscela. Sorry I forget to tell you that I'm able to build the project now, though it has a storyboard error. Before, when I'm using Cards 1.1, the prototype of a card can appear on the storyboard, but currently it can't show up, so I think it's that error causes the UI to fail to display.

Also I tried reinstalling Xcode. The error is still here...

PaoloCuscela commented 6 years ago

I googled about it yesterday. It turned out that is a common issue, probably about some optional vars stopping IBDesignables to be rendered. I'll try to fix that in these days

wqfan commented 6 years ago

Thanks for your efforts!

PaoloCuscela commented 6 years ago

Good news :D v1.2.4 out. Now it should display the preview on the storyboard correctly.

wqfan commented 6 years ago

Sorry @PaoloCuscela I missed your last comment. I just upgraded it to 1.2.4 and the preview is still blank. Probably it's a weird problem happened on my macOS only. Thanks very much for your help!

PaoloCuscela commented 6 years ago

Already tried with Editor -> Refresh all views ?

wqfan commented 6 years ago

Yes. And the storyboard error is still here:

Designables: Failed to render and update auto layout status for ViewController (BYZ-38-t0r): dlopen(Cards.framework, 1): Library not loaded: @rpath/Player.framework/Player
  Referenced from: Cards.framework
  Reason: image not found
PaoloCuscela commented 6 years ago

Do you get this error only with my repo ?

wqfan commented 6 years ago

Yes. And I find it works fine on your Demo project. I'm very confused why the error happens on my projects.

wqfan commented 6 years ago

Hello @PaoloCuscela, I upgraded the Xcode to the newest 9.1. The storyboard error disappeared but I still can't see the preview.

screen shot 2017-10-31 at 3 25 03 pm
FranciscoPereira commented 6 years ago

I'm having the same error too but in my case I'm trying to use it on a UICollectionViewCell by adding a subview with Card class type.

PaoloCuscela commented 6 years ago

I've done some testing. Looks really strange, with the sdk installed from cocoapods repo preview are not rendered. With a local copy ( pod 'Cards', :path => '../') it's all fine. I've to do some research on it.

AshleyDeng commented 6 years ago

We have the same issue as @wqfan reported. There is an error on Storyboard saying

IB Designables: Failed to render and update auto layout status for EventsTableViewController (ZmE-MU-FrL): dlopen(Cards.framework, 1): Library not loaded: @rpath/Player.framework/Player Referenced from: Cards.framework Reason: image not found

The UI was not able to be rendered on Storyboard neither.

Me and my guy are on Cards 1.3.0 and XCode 9.1 and 9.2

PaoloCuscela commented 6 years ago

I found a workaround that might work, try adding this in your podfile. https://github.com/CocoaPods/CocoaPods/issues/5334#issuecomment-254199946

avjiang commented 6 years ago

Hi, just found out this library and i face the same issue as stated above, failed to render IB designable error. is there any update for this issue? I am using Xcode 9.2

Thanks!

MhndMousa commented 6 years ago

I had the same error trying to use cocoapods, I worked around it by adding the library manually.

qin-guan commented 6 years ago

i assume its a cocoapods error since the same problem doesnt come up when adding the library manually...

dannylnz commented 6 years ago

Hi, any update on this bug? does anyone found a workaround for this? Thanks 👍

lukaskirner commented 6 years ago

I still get this bug in 1.3.2. With pod I get the IBDesignables error and if I install it manually it wont find the Cards module. Is there no fix out there for any of these problems?

qin-guan commented 6 years ago

This issue is not because of the Cards its due to the latest Cocoapods version to fix it just downgrade your cp to about 1.4< and it shouldnt show the error anymore

@lukaskirner if you install it manually from what i know you wouldnt need to import Cards like its already imported somehow

lukaskirner commented 6 years ago

@QinGuan2004 suggested to downgrade Cocoapods which didn't completly removed the problem but after I added this little code to the Podfile it workes.

post_install do |installer|
  installer.pods_project.build_configurations.each do |config|
    config.build_settings['LD_RUNPATH_SEARCH_PATHS'] = [
      '$(FRAMEWORK_SEARCH_PATHS)'
    ]
  end
end
michaelcarroll commented 6 years ago

I had this same issue and fixed it by adding a signature fix and the code @lukaskirner mentioned above.

Here is what my pod file looks like:

# Uncomment the next line to define a global platform for your project
# platform :ios, '11.0'

target 'CardTest' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for CardTest
    pod 'Cards'

post_install do |installer|
  installer.pods_project.build_configurations.each do |config|
    config.build_settings['LD_RUNPATH_SEARCH_PATHS'] = [
      '$(FRAMEWORK_SEARCH_PATHS)'
    ]
    installer.pods_project.build_configurations.each do |config|
        config.build_settings.delete('CODE_SIGNING_ALLOWED')
        config.build_settings.delete('CODE_SIGNING_REQUIRED')
   end
end
end
end
jctaoo commented 4 years ago

It works for me. xcode: 11.3 macOS: 10.15 CocoaPods: 1.8.1

@QinGuan2004 suggested to downgrade Cocoapods which didn't completly removed the problem but after I added this little code to the Podfile it workes.

post_install do |installer|
  installer.pods_project.build_configurations.each do |config|
    config.build_settings['LD_RUNPATH_SEARCH_PATHS'] = [
      '$(FRAMEWORK_SEARCH_PATHS)'
    ]
  end
end