0

大家好,我想问问你们中是否有人遇到过像我这样的问题。我一直在使用 Three20 框架的 TTNavigator 做一个项目。每个视图都按应有的方式显示和转换。我有一个应用程序菜单,其中包含应用程序各自模块的按钮。问题是,当我单击特定模块的按钮并显示该视图时,TTNavigator 的 URL 属性值是应用程序的菜单视图 (tt://mainMenu) 而不是模块的初始视图 (例如“tt://messageBoard”或“tt://profilePage”)。我已经检查并审查了可能与此问题相关的必要代码块,但我似乎无法解决手头的错误。

这是我的 AppDelegate 的定义

#import "Three20TestAppDelegate.h"
#import "StartViewController.h"
#import "JumpsiteProfilePage.h"
#import "MenuViewController.h"
#import "BNDefaultStylesheet.h"
#import "MessageBoardViewController.h"
#import "GroupListViewController.h"
#import "DrillDownGroupListView.h"
#import "ProfileListViewController.h"
#import "ProfileDetailsViewController.h"

#define UIColorFromRGB(rgbValue) [UIColor \
colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \
green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \
blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

@implementation UINavigationBar (UINavigationBarCategory)
-(void)drawRect:(CGRect)rect{

UIImage *image = [UIImage imageNamed:@"NavBar BG.png"];
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];

self.tintColor = UIColorFromRGB(0xFFD900);

}
@end

@implementation UIToolbar (UIToolbarCategory)
-(void)drawRect:(CGRect)rect{

UIImage *image = [UIImage imageNamed:@"NavBar BG.png"];
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];

self.tintColor = UIColorFromRGB(0xFFD900);
[super drawRect:rect];
}



@end


@implementation Three20TestAppDelegate


@synthesize window=_window;

@synthesize managedObjectContext=__managedObjectContext;

@synthesize managedObjectModel=__managedObjectModel;

@synthesize persistentStoreCoordinator=__persistentStoreCoordinator;

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

TTNavigator *navigator = [TTNavigator navigator];
navigator.window = _window;
navigator.persistenceMode = TTNavigatorPersistenceModeAll;
navigator.supportsShakeToReload = YES;

[TTStyleSheet setGlobalStyleSheet:[[[BNDefaultStylesheet alloc] init] autorelease]]; 

TTURLMap *map = navigator.URLMap;

//startView(Log-in View)
[map from:@"tt://startView"
 toSharedViewController:[StartViewController class]];

//Application's Menu
[map from:@"tt://mainMenu" 
toSharedViewController:[MenuViewController class]];

//User's Profile module
[map from:@"tt://profilePage" 
toSharedViewController:[JumpsiteProfilePage class]];

//Message Board module
[map from:@"tt://messageBoard" 
toSharedViewController:[MessageBoardViewController class]];
[map from:@"tt://groupList" 
toSharedViewController:[GroupListViewController class]];
[map from:@"tt://drillDownListView" 
toSharedViewController:[DrillDownGroupListView class]];

//Profile List module
[map from:@"tt://profileList" 
toViewController:[ProfileListViewController class]];
[map from:@"tt://profileDetailsList" 
toSharedViewController:[ProfileDetailsViewController class]];  

[navigator openURLAction:[TTURLAction actionWithURLPath:@"tt://startView"]];

// Override point for customization after application launch
[_window makeKeyAndVisible];
}

- (void)applicationWillResignActive:(UIApplication *)application
{
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
}

- (void)applicationWillTerminate:(UIApplication *)application
{
[self saveContext];
}

- (void)dealloc
{
[_window release];
[__managedObjectContext release];
[__managedObjectModel release];
[__persistentStoreCoordinator release];
[super dealloc];
}

- (void)awakeFromNib
{
}

- (void)saveContext
{
NSError *error = nil;
NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
if (managedObjectContext != nil)
{
    if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error])
    {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    } 
}
}

#pragma mark - Core Data stack

- (NSManagedObjectContext *)managedObjectContext
{
if (__managedObjectContext != nil)
{
    return __managedObjectContext;
}

NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil)
{
    __managedObjectContext = [[NSManagedObjectContext alloc] init];
    [__managedObjectContext setPersistentStoreCoordinator:coordinator];
}
return __managedObjectContext;
}

- (NSManagedObjectModel *)managedObjectModel
{
if (__managedObjectModel != nil)
{
    return __managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Three20Test" withExtension:@"momd"];
__managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];    
return __managedObjectModel;
}

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (__persistentStoreCoordinator != nil)
{
    return __persistentStoreCoordinator;
}

NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"Three20Test.sqlite"];

NSError *error = nil;
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error])
{
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    abort();
}    

return __persistentStoreCoordinator;
}

#pragma mark - Application's Documents directory

- (NSURL *)applicationDocumentsDirectory
{
    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory                 inDomains:NSUserDomainMask] lastObject];
}

@end
4

1 回答 1

0

映射视图控制器

[map from:kAppRootURLPath toViewController:[HomeThumbnailViewController class]];

调用 ViewController

TTURLAction *urlAction=[[[TTURLAction alloc] initWithURLPath:strTTURL] autorelease];
urlAction.animated=YES;
[[TTNavigator navigator]openURLAction:urlAction];
于 2011-11-29T10:53:37.183 回答