Aller au contenu

Photo

Problème de liaison entre TAb bar, ttnavigator, tttable


  • Please log in to reply
4 replies to this topic

#1 rip-studio

rip-studio

    iPuP apprenti

  • Members
  • 63 Messages :

Posté 15 septembre 2012 - 19:28

Bonjour à tous,

bien après quelques jours de forcing, je fais appel à vous par abandons personnel ^^, je mettrais le code source à dispo, si cela finis par fonctionner, une fois nettoyé ... tabbar photoviewcontroller parser rss mapview, une base ^^'


Je suis face à une simple application sous forme de tabbar, delegate basique ... comme ci-dessous, dans laquelle j'aimerais intégré un parser rss utilisant three20 qui fonctionne parfaitement.

Malheureusement à l'intégration, je plante.

Voici la base de mon application, une partie de l'Appdelegate, renvoyant vers les différents viewcontroller.

(NSDictionary *)launchOptions
{
    [[UIApplication sharedApplication]
     registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
    application.applicationIconBadgeNumber = 0;
      
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

    UIViewController *viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil] autorelease];
    UIViewController *viewController3 = [[[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil] autorelease];
    photoviewcontroller = [[PhotoViewController alloc] init];  
	UINavigationController* viewController5 = [[[UINavigationController alloc] initWithRootViewController:photoviewcontroller] autorelease];
    
    
    self.tabBarController = [[[UITabBarController alloc] init] autorelease];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects: viewController2, viewController3, viewController5, nil];
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}
tout ce qu'il y a de plus basique pour une application de type tabbar.

Bien maintenant, dans un autre projet j'ai réalisé un parser rss en faisant appel aux outils three20, donc TTNavigator TTtableview ..... Jusque la tout fonctionne.

Ce second projet est basé sur un delegate basique aussi :

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
	
    TTNavigator* navigator = [TTNavigator navigator];
	navigator.persistenceMode = TTNavigatorPersistenceModeTop;
	navigator.window = window;
	
	TTURLMap *map = navigator.URLMap;
	[map from:@"*" toViewController:[TTWebController class]];
    [map from:@"tt://rip-studio" toSharedViewController:[FeedListController class]];
	
	if (![navigator restoreViewControllers]) {
		[navigator openURLAction:[TTURLAction actionWithURLPath:@"tt://rip-studio"]];
	}	
	
    [self.window makeKeyAndVisible];
    return YES;
}
et le feedlistcontroller :

- (void)loadView {  
    [super loadView];  
    
    self.tableView = [[[UITableView alloc] initWithFrame:self.view.bounds  
                                                   style:UITableViewStyleGrouped] autorelease];  
    self.tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth  
    | UIViewAutoresizingFlexibleHeight;  
    self.variableHeightRows = YES;  
    self.title = @"Le Théâtre";  
    [self.view addSubview:self.tableView];  
} 

- (void)createModel {
	self.dataSource = [[[FeedDataSource alloc] initWithRSSFeed:@"http://ibaule.rip-studio.fr/?feed=rss2"] autorelease];
}

// Adds Pull to Reload to our table,  sweet!
- (id<UITableViewDelegate>)createDelegate {
	return [[[TTTableViewDragRefreshDelegate alloc] initWithController:self] autorelease];
}
Encore une fois rien de bien fou.

Maintenant j'aimerais intégré cette seconde application dans ma première.

Et la je coince, j'ai tout tenté ... je n'ai plus d'idée. Si quelqu'un pourrait m'aiguiller sur la méthode a suivre ...


Pour le moment j'en suis à ce stade, j'ai jouté un viewcontroller dans mon appdelegate de cette manière :

.H

//
//  AppDelegate.h
//  VillaLaGrange
//
//  Created by pierre brisorgueil on 03/08/12.
//  Copyright © 2012 __MyCompanyName__. All rights reserved.
//

#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
#import <AudioToolbox/AudioToolbox.h>

@class PhotoViewController;
@class TTNavigatorViewController;

@interface AppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate>{
   
    PhotoViewController *photoviewcontroller;
    TTNavigatorViewController *ttnavigatorviewcontroller;
    UIWindow *window;


}

@property (nonatomic, retain) TTNavigatorViewController *ttnavigatorviewcontroller;
@property (nonatomic, retain) PhotoViewController *photoviewcontroller;
@property (nonatomic, retain) UIWindow *window;

@property (strong, nonatomic) UITabBarController *tabBarController;



- (NSURL *)applicationDocumentsDirectory;
- (void)saveContext;

@end
.M

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Add registration for remote notifications
    [[UIApplication sharedApplication]
     registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
    
    // Clear application badge when app launches
    application.applicationIconBadgeNumber = 0;
    
    // code préfait
    
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.

    UIViewController *viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil] autorelease];
    UIViewController *viewController3 = [[[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil] autorelease];

    
    
    photoviewcontroller = [[PhotoViewController alloc] init];  
	UINavigationController* viewController5 = [[[UINavigationController alloc] initWithRootViewController:photoviewcontroller] autorelease];
     
    ttnavigatorviewcontroller = [[NewsViewController alloc] init];
	UINavigationController* viewController1 = [[[UINavigationController alloc] initWithRootViewController:ttnavigatorviewcontroller] autorelease];
  
    
    
    self.tabBarController = [[[UITabBarController alloc] init] autorelease];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects: viewController1 ,viewController2, viewController3, viewController5, nil];
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}
Et j'ai fais ceci dans mon viewcontroller correspondant à mon ttnavigator

.h

//
//  NewsViewController.h
//  LeTheatre
//
//  Created by pierre brisorgueil on 15/09/12.
//  Copyright © 2012 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <Three20/Three20.h>

@interface NewsViewController : TTNavigatorViewController {
    
}

@end
.m

- (void)viewDidLoad {
	[TTStyleSheet setGlobalStyleSheet:[[[DefaultStylesheet alloc] init] autorelease]];
	
    TTNavigator* navigator = [TTNavigator navigator];
	navigator.persistenceMode = TTNavigatorPersistenceModeTop;
	navigator.window = (UIWindow*) self.view;
	
	TTURLMap *map = navigator.URLMap;
	[map from:@"*" toViewController:[TTWebController class]];
    [map from:@"tt://rip-studio" toSharedViewController:[FeedListController class]];
	
	if (![navigator restoreViewControllers]) {
		[navigator openURLAction:[TTURLAction actionWithURLPath:@"tt://rip-studio"]];
	}	
	
}
Mais cela ne fonctionne pas quelques soit les variantes effectués, je désespère, pour le moment j'en suis à cette erreur :

2012-09-15 19:49:01.027 LeTheatre[13590:11603] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView makeKeyAndVisible]: unrecognized selector sent to instance 0x6f874b0'
*** First throw call stack:
(0x18db022 0x1e93cd6 0x18dccbd 0x1841ed0 0x1841cb2 0x16e2e 0x83b2 0x8e1a1e 0x8e0fec 0x907f1d 0x8f21cb 0x908df1 0x908e0d 0x908e0d 0x908ea9 0x8476f5 0x84773c 0x23f2 0x818386 0x819274 0x828183 0x828c38 0x81c634 0x27ceef5 0x18af195 0x1813ff2 0x18128da 0x1811d84 0x1811c9b 0x818c65 0x81a626 0x1e1a 0x1d65)
terminate called throwing an exception(lldb)


Je veux bien fournir le projet à qui veux y jeter un coup d'oeil, il faudra simplement réinstaller three20 comme ci-dessous :

python Three20/src/scripts/ttmodule.py -p ./BasicNavigationApp.xcodeproj Three20 --xcode-version=4 -v
Après avoir copier le dossier three20 au sein de l'application.

JE remercie d'avance toute personne se penchant un peu sur le problème, mais j'avoue qu'après avoir tout tenté, je crois être totalement perdu actuellement. Je ne comprend plus ce qui ne va pas.

Ce message a été modifié par rip-studio - 15 septembre 2012 - 19:34.


#2 horus59153

horus59153

    iPuP apprenti

  • Members
  • 51 Messages :

Posté 15 septembre 2012 - 21:59

J'aurais bien aimé t'aidé mais déjà tes connaissance me dépasse x) bon courage en tous cas :s
Horus,

#3 rip-studio

rip-studio

    iPuP apprenti

  • Members
  • 63 Messages :

Posté 16 septembre 2012 - 11:55

Merci quand même, mais pas sur qu'elle te dépasse ^^ je crois que je suis perdu dans les classes.

#4 rip-studio

rip-studio

    iPuP apprenti

  • Members
  • 63 Messages :

Posté 20 septembre 2012 - 11:14

Personne pour un petit coup de main ?

#5 iMobile

iMobile

    iPuP apprenti

  • Members
  • 82 Messages :

Posté 02 octobre 2012 - 15:01

Bonjour,

Si le problème n'est toujours pas réglé, le source du bug est ici :
navigator.window = (UIWindow*) self.view;
Tu assignes une UIView à la place d'une UIWindow ...




0 utilisateur(s) en train de lire ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)