1

I'm using Xcode 4.2 and Three20 to create app that can be run on all iOS.

When I run the app on iPhone 3G having iOS 3.0,
I see a crash with the following message in the Debug Console:

dyld: Symbol not found: _OBJC_CLASS_$_UIPopoverController
  Referenced from: /var/mobile/Applications/7AB01877-55F2-4A5F-A835-FF7849D6E285/Xcode4M.app/Xcode4M
  Expected in: /System/Library/Frameworks/UIKit.framework/UIKit

I followed this this SO and fix the crash. Now I receive another crash with this message:

dyld: Symbol not found: _OBJC_CLASS_$_UISplitViewController
  Referenced from: /var/mobile/Applications/7AB01877-55F2-4A5F-A835-FF7849D6E285/Xcode4M.app/Xcode4M
  Expected in: /System/Library/Frameworks/UIKit.framework/UIKit

I tried to fix this crash with the same method, but not succeeded.

Do you know how to fix this?

Edit: (Add problematic code)

File: TTSplitViewController

@interface TTSplitViewController : UISplitViewController 
<UISplitViewControllerDelegate, TTNavigatorRootContainer> {
@private
  TTNavigator* _leftNavigator;
  TTNavigator* _rightNavigator;
  UIBarButtonItem*      _splitViewButton;
  id  _popoverSplitController;
}
Community
  • 1
  • 1
Tuyen Nguyen
  • 4,389
  • 7
  • 51
  • 77

2 Answers2

1

yes. you can see the code in the pull request at https://github.com/facebook/three20/pull/695/files. It solves all 3.1 issues, besides the TTSplitViewController.

it uses a special function of three20 to create a UIPopViewController

_popoverController =  [[TTUIPopoverControllerClass() alloc] init];
  if (_popoverController != nil) {
    [_popoverController setContentViewController:controller];
    [_popoverController setDelegate:self];
  }

You will still need to comment out TTSplitViewController, however that's the only class that has an issue with iOS 3.1. (see the comments in the pull request)

aporat
  • 5,922
  • 5
  • 32
  • 54
0

I uncheck TTSplitViewController.h and TTSplitViewController.m in the Target Membership.
and comment the line

//#import "Three20UI/TTSplitViewController.h"  

in Three20UI.h

enter image description here

and uncheck UISplitViewController+TTNavigator.h and UISplitViewController+TTNavigator.m from their Target Membership.

and comment the line

//#import "Three20UICommon/UISplitViewController+TTNavigator.h"  

in Three20UICommon+Additions.h

enter image description here

I works, but I would prefer to do something like this SO so I can use these classes later. I'd be glad if someone know how to do it.

Community
  • 1
  • 1
Tuyen Nguyen
  • 4,389
  • 7
  • 51
  • 77