역설적이게도, 내 320 개의 앱 중 하나에 Facebook 지원을 추가하기 위해 facebook-ios-sdk
을 사용하는 것과 비슷한 문제가있었습니다. 내 컨트롤러 페이스 북의 URL을 응답을 얻을 것으로 예상되지만, 표준 TTNavigator
URL 매핑을 사용하는 것은 불가능했습니다.
수신 URL을 전달하기 위해 컨트롤러에서 Facebook 개체를 호출하는 방법을 찾아야했습니다. TTNavigator
컨트롤러 스택을 관리 할 때 컨트롤러 자체 이외의 다른 곳에서 컨트롤러에 "액세스"할 수 없습니다.
컨트롤러 설정을 끝내기 위해 앱 위임자의 개인 매개 변수가 있고 TTURLMap
의 개인 매개 변수가 있습니다.
는
@class PhotoEditorController;
@interface PhotoBoothAppDelegate : NSObject <UIApplicationDelegate> {
PhotoEditorController* _photoEditorController;
}
@property(nonatomic, retain) PhotoEditorController* photoEditorController;
@end
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
@implementation PhotoBoothAppDelegate
@synthesize photoEditorController = _photoEditorController;
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark -
#pragma mark UIApplicationDelegate
///////////////////////////////////////////////////////////////////////////////////////////////////
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:NO];
TTNavigator* navigator = [TTNavigator navigator];
navigator.persistenceMode = TTNavigatorPersistenceModeNone;
navigator.window = [[UIWindow alloc] initWithFrame:TTScreenBounds()];
TTURLMap* map = navigator.URLMap;
_photoEditorController = [[PhotoEditorController alloc] init];
// Any URL that doesn't match will fall back on this one, and open in the web browser
[map from:@"*" toViewController:[TTWebController class]];
[map from:@"tt://photo" toViewController:_photoEditorController transition:UIViewAnimationTransitionCurlUp];
// Before opening the tab bar, we see if the controller history was persisted the last time
if (![navigator restoreViewControllers]) {
[navigator openURLAction:[TTURLAction actionWithURLPath:@"tt://intro"]];
}
return YES;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [[_photoEditorController facebook] handleOpenURL:url];
}
이 코드는 여전히 자신의 매개 변수를 직접 액세스 할 수 있습니다 의미하지만, 여전히 컨트롤러에 대한 참조를 가지고는 TTNaviagtor
사용합니다.
전체적으로 나는 TTNavigator
을 피할 것을 강력히 권장합니다. 그것의 iPad 지원은 거의 존재하지 않고 깨졌습니다.
동의. TTStyledText는 여전히 유용하지만 전반적으로 지금부터 Three20을 명확히하려고 노력할 것입니다. – CharlieMezak