Property navigationController not found on object of type

di il
12 risposte

Property navigationController not found on object of type

Ciao, sono sempre qua, ma se risolvo questo errore forse completo la prima app (con tanti aiuti) ho integrato un sistema di login questo
https://github.com/frederik-jacques/objc-login-syste
il login funziona ma se lo collego al resto della app mi da errore nel senso che effettuato il login mi porta verso la root view che è questa
#import <UIKit/UIKit.h>
#import "InsertDelegate.h"

__weak id <InsertDelegate> _delegate;

@interface MainView : UIView <UITextViewDelegate, UITextFieldDelegate, UITableViewDataSource,UITableViewDelegate>
@property (nonatomic, strong) UIImageView *imageView;
@property (nonatomic, strong) UIButton *btnLogout;

@property(nonatomic,weak) id <InsertDelegate> delegate;
@property (strong, nonatomic) UIWindow *window;

-(IBAction)startDownload:(id)sender;

@end
questa mainview ha il pulsante di logout e un pulsante invece che dovrebbe portarmi su un'altra view ed eseguire delle operazioni - il pulsante messo a parte rispetto al login funziona in un controller, messo li nella view mi da errore quando mi sposto sull'altra view
- (id)initWithFrame:(CGRect)frame {

    self = [super initWithFrame:frame];
    
    if (self) {
        // Initialization code
        [self createBackground];
        [self createLogoutButton];
        [self createDownloadButton];
    }
    
    return self;
}

- (void)createDownloadButton {
    
    UIImage *image = [ImageFactory createImageWithPathForResource:@"logout_button" ofType:@"png" inDirectory:@"images"];
    
    self.btnLogout2 = [UIButton buttonWithType:UIButtonTypeCustom];
    [self.btnLogout2 setImage:image forState:UIControlStateNormal];
    self.btnLogout2.frame = CGRectMake(25, 125, image.size.width, image.size.height);
    [self.btnLogout2 addTarget:self action:@selector(startDownload:) forControlEvents:UIControlEventTouchUpInside];
    [self addSubview:self.btnLogout2];
    
}

//questo è il codice che in un'altra view funzionava qui non funziona piu

-(IBAction)startDownload:(id)sender{

  //altro codice

    MyBooxViewViewController *viewController4 = [[MyBooxViewViewController alloc]init];
    [viewController4.delegate insertNewFruit: titolo: autore :editore: anno: urls];
//mi da errore qui
    [self.navigationController pushViewController:viewController4 animated:YES];
    
   
}
//mi da errore qui
[self.navigationController pushViewController:viewController4 animated:YES];
nell'errore mi dice
Property navigationController not found on object of type mainView
insomma se dal login voglio visualizzare i contenuti della app spostandomi su una altra view non funziona forse c'è differenza tra UIView e UIViewController per chè col controller mi funziona il pulsante rompo sempre grazie dell'aiuto

12 Risposte

  • Re: Property navigationController not found on object of type

    MainView è una UIView?? ha una property navigationController? è valorizzata?

    se sei in una UIView, self.navigationController non funge, a meno che non dichiari tu un attributo navigationController e lo valorizzi in qualche modo. Puoi pensare di passarti il riferimento al controller facendo un costruttore ad hoc per la tua view che prende come parametro in ingresso il tuo UINavigationController.

    Quindi, supponendo che il costruttore della tua view abbia come firma la seguente:
    - (id) initWIthNavigationController:(UINavigationController*)controller;
    quando istanzi la tua view nel controller, farai:
    MyView* v = [[MyView alloc] initWithNavigationController:self];
    Poi nel costruttore della tua view, dopo aver chiamato il super (Costruttore nativo delle UIView), valorizzerai una property che chiami come vuoi (tipo navigationController) in questo modo:
    self.navigationController = controller;
    La push poi la andrai a fare su self.navigationController.

    Non so se è chiaro, se hai altri problemi scrivi
  • Re: Property navigationController not found on object of type

    Grazie, ora non mi da piu errore ma non mi sposta nell'altra view in effetti non mi è chiarissimo posto il codice se me lo puoi correggere
    questo è il mainview.h
    #import <UIKit/UIKit.h>
    #import "InsertDelegate.h"
    
    __weak id <InsertDelegate> _delegate;
    
    @interface MainView : UIView <UITextViewDelegate, UITextFieldDelegate, UITableViewDataSource,UITableViewDelegate>{
        
        UINavigationController * Controller;
    
    }
    @property (nonatomic, strong) UIImageView *imageView;
    @property (nonatomic, strong) UIButton *btnLogout;
    @property (nonatomic, strong) UIButton *btnLogout2;
    
    @property(nonatomic,weak) id <InsertDelegate> delegate;
    @property (strong, nonatomic) UIWindow *window;
    @property (nonatomic, retain) UINavigationController * Controller;
    
    
    -(IBAction)startDownload:(id)sender;
    - (id) initWIthNavigationController:(UINavigationController*)controller;
    
    @end
    e nel .m
    
    @implementation MainView
    
    @synthesize imageView = _imageView;
    @synthesize btnLogout = _btnLogout;
    @synthesize btnLogout2 = _btnLogout2;
    @synthesize Controller;
    
    - (id) initWIthNavigationController:(UINavigationController*)controller{
        
        if (self = [super init]) {
            self.Controller = controller;
            // Initialization code
            
            
        }
        return self;
    
    }
    
    - (id)initWithFrame:(CGRect)frame {
    
        self = [super initWithFrame:frame];
        
        if (self) {
            // Initialization code
            [self createBackground];
            [self createLogoutButton];
            [self createDownloadButton];
            
        }
        
        return self;
    }
    
    e il pulsante chiama questo metodo con questo push
    
        MyBooxViewViewController *viewController4 = [[MyBooxViewViewController alloc]init];
        [viewController4.delegate insertNewFruit: titolo: autore :editore: anno: urls];
        [self.Controller pushViewController:viewController4 animated:YES];
    
    Thanks
  • Re: Property navigationController not found on object of type

    Allora...

    Il tuo MyBooxViewViewController ha uno xib per l' interfaccia o la costruisci tu programmaticamente nel costruttore?

    Perchè se hai uno xib, il tuo controller dovresti istanziarlo con:
    
        MyBooxViewViewController *viewController4 = [[MyBooxViewViewController alloc]initWithNibName:@"nomexib" bundle:nil];
    
    altrimenti è ovvio che non vedi nulla. Istanzi il controller ma senza un'interfaccia.

    Sinceramente è l unica cosa che mi viene in mente così, su due piedi. Qualora non fosse questo il problema, allora devi postarmi il codice della MainView (.m e .h) per intero, quello del MyBooxViewViewController (sempre .m e .h) per intero, e di altre classi implicate. Una view non è un ViewController, quindi sicuramente questa view devi mostrarla all' interno di un controller. Quale controller? Insomma ci sono certe cose che non mi sono chiare di quel che vuoi fare, magari leggendo il codice capisco.

    Buona giornata e buon lavoro
  • Re: Property navigationController not found on object of type

    Allora nella nuova view quella che devo far comparire non c'è uno xib il problema è che non so collegare il sistema di login ai contenuti della app posto il codice per intero
    mainview.h
    #import <UIKit/UIKit.h>
    #import "InsertDelegate.h"
    
    __weak id <InsertDelegate> _delegate;
    
    @interface MainView : UIView <UITextViewDelegate, UITextFieldDelegate, UITableViewDataSource,UITableViewDelegate>{
        
        UINavigationController * Controller;
    
    }
    @property (nonatomic, strong) UIImageView *imageView;
    @property (nonatomic, strong) UIButton *btnLogout;
    @property (nonatomic, strong) UIButton *btnLogout2;
    
    @property(nonatomic,weak) id <InsertDelegate> delegate;
    @property (strong, nonatomic) UIWindow *window;
    @property (nonatomic, retain) UINavigationController * Controller;
    
    
    -(IBAction)startDownload:(id)sender;
    - (id) initWIthNavigationController:(UINavigationController*)controller;
    
    @end
    questo il metodo richiamato dal pulsante
    -(IBAction)startDownload:(id)sender{
    qui leggo un xml lo inserisco in un NSDictionary lo metto negli array e passo questi array alla nuova view dove c'è una UITbleView che dev'essere popolata da questi array
    il pulsante fa tutto tranne far visualizzare la nuova view
    mainview.m
    #import "MainView.h"
    #import "ImageFactory.h"
    #import "LoginNotificationNames.h"
    #import "MainNotificationNames.h"
    #import "DownloadViewController.h"
    #import "MyBooxViewViewController.h"
    #import "XMLReader.h"
    
    @implementation MainView
    
    @synthesize imageView = _imageView;
    @synthesize btnLogout = _btnLogout;
    @synthesize btnLogout2 = _btnLogout2;
    @synthesize Controller;
    
    - (id) initWIthNavigationController:(UINavigationController*)controller{
        
        if (self = [super init]) {
            self.Controller = controller;
            // Initialization code
            
            
        }
        return self;
    
    }
    
    - (id)initWithFrame:(CGRect)frame {
    
        self = [super initWithFrame:frame];
        
        if (self) {
            // Initialization code
            [self createBackground];
            [self createLogoutButton];
            [self createDownloadButton];
            
        }
        
        return self;
    }
    
    
    - (void)createBackground {
        UIImage *image = [ImageFactory createImageWithPathForResource:@"bg" ofType:@"png" inDirectory:@"images"];
        
        self.imageView = [[UIImageView alloc] initWithImage:image];
        [self addSubview:self.imageView];
    }
    
    - (void)createLogoutButton {
        
        UIImage *image = [ImageFactory createImageWithPathForResource:@"logout_button" ofType:@"png" inDirectory:@"images"];
        
        self.btnLogout = [UIButton buttonWithType:UIButtonTypeCustom];
        [self.btnLogout setImage:image forState:UIControlStateNormal];
        self.btnLogout.frame = CGRectMake(25, 25, image.size.width, image.size.height);
        [self.btnLogout addTarget:self action:@selector(logoutClicked:) forControlEvents:UIControlEventTouchUpInside];
        [self addSubview:self.btnLogout];
         
    }
    
    - (void)createDownloadButton {
        
        UIImage *image = [ImageFactory createImageWithPathForResource:@"logout_button" ofType:@"png" inDirectory:@"images"];
        
        self.btnLogout2 = [UIButton buttonWithType:UIButtonTypeCustom];
        [self.btnLogout2 setImage:image forState:UIControlStateNormal];
        self.btnLogout2.frame = CGRectMake(25, 125, image.size.width, image.size.height);
        [self.btnLogout2 addTarget:self action:@selector(startDownload:) forControlEvents:UIControlEventTouchUpInside];
        [self addSubview:self.btnLogout2];
        
    }
    
    - (void)logoutClicked:(id)sender {
        NSLog(@"[MainView] Logout clicked");
        
        [[NSNotificationCenter defaultCenter] postNotificationName:LOGOUT_NOTIFICATION object:self];
    }
    
    - (void)dealloc {
        NSLog(@"[MainView] Dealloc");
    }
    
    -(IBAction)startDownload:(id)sender{
        
        UIAlertView *alert = [[UIAlertView alloc]
                              initWithTitle:@"yesssssss what's up"
                              message:[NSString stringWithFormat:@"iPad %@",  @"yes"]
                              //message:[NSString stringWithFormat:@"iPad %d", indexPath.row]
                              delegate:self
                              cancelButtonTitle:@"OK"
                              otherButtonTitles:nil];
        [alert show];
        
        
        /////////////////////
        NSString *url = @"http://miosito.com/ebooks/filexml.xml";
        NSURLRequest *urlrequest = [ [NSURLRequest alloc] initWithURL: [NSURL URLWithString:url] ];
        NSData *returnData = [ NSURLConnection sendSynchronousRequest:urlrequest returningResponse: nil error: nil ];
        NSString *testXMLString = [[NSString alloc] initWithData:returnData encoding:NSASCIIStringEncoding];
        
        
        // Parse the XML into a dictionary
        NSError *parseError = nil;
        
        NSDictionary *dict = [XMLReader dictionaryForXMLString:testXMLString error:&parseError];
        NSMutableArray *ebook = [[NSMutableArray alloc] init];
        ebook = [[dict valueForKey:@"eboox"] valueForKey:@"ebook"];
        //Questo conterrà un array di dictionary, ogni dict è un utente
        
        NSMutableArray *autore = [[NSMutableArray alloc] init];
        NSMutableArray *titolo = [[NSMutableArray alloc] init];
        NSMutableArray *urls = [[NSMutableArray alloc] init];
        NSMutableArray *editore = [[NSMutableArray alloc] init];
        NSMutableArray *anno = [[NSMutableArray alloc] init];
        for (NSDictionary *user in ebook)
        {
            NSString *autoreString = [[user valueForKey:@"autore"] valueForKey:@"text"];
            NSString *titoloString = [[user valueForKey:@"titolo"] valueForKey:@"text"];
            NSString *urlsString = [[user valueForKey:@"url"] valueForKey:@"text"];
            NSString *editoreString = [[user valueForKey:@"editore"] valueForKey:@"text"];
            NSString *annoString = [[user valueForKey:@"anno"] valueForKey:@"text"];
            
            [autore addObject:autoreString];
            [titolo addObject:titoloString];
            [urls addObject:urlsString];
            [editore addObject:editoreString];
            [anno addObject: annoString];
        }
        
        
        int count = [titolo count];
        for(int i=0;i<count;i++)
        {
            id item1;
            id item2;
            id item3;
            id item4;
            id item5;
            item1 = [titolo objectAtIndex:i];
            item2 = [autore objectAtIndex:i];
            item3 = [urls objectAtIndex:i];
            item4 = [editore objectAtIndex:i];
            item5 = [anno objectAtIndex:i];
            
            NSLog(@"Found an Item: %@",item1);
            NSLog(@"Found an Item: %@",item2);
            NSLog(@"Found an Item: %@",item3);
            NSLog(@"Found an Item: %@",item4);
            NSLog(@"Found an Item: %@",item5);
        }
        
        
        //Prima istanzio il secondo controller, che nel suo costruttore si setta come delegato di se stesso
        MyBooxViewViewController *viewController4 = [[MyBooxViewViewController alloc]init];
        //Poi chiamo il metodo del delegato sull' istanza del secondo controller
        [viewController4.delegate insertNewFruit: titolo: autore :editore: anno: urls];
        //Infine pusho il controller
        [self.Controller pushViewController:viewController4 animated:YES];
        
       
    }
    
    @end
    
    la mainview funziona con un controller che fa parte del sistema di login posto questo codice
    mainviewcontroller.h
    #import <UIKit/UIKit.h>
    
    @interface MainViewController : UIViewController
    
    @end


    mainviewcontroller.m
    
    #import "MainViewController.h"
    #import "MainView.h"
    #import "LoginViewController.h"
    #import "LoginNotificationNames.h"
    #import "MainNotificationNames.h"
    #import "DownloadViewController.h"
    
    @interface MainViewController ()
    
    @end
    
    @implementation MainViewController
    
    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        
        if (self) {
            // Custom initialization
            NSLog(@"[MainViewController] Init");
            
        }
        
        return self;
    }
    
    - (void)loadView {
        CGRect frame = [[UIScreen mainScreen] bounds];
        
        MainView *v = [[MainView alloc] initWithFrame:frame];
        [self setView:v];
        
        /////////push new view
        //DownloadViewController *viewController2 = [[DownloadViewController alloc]initWithNibName:@"ViewController" bundle:nil];
        //[self.navigationController pushViewController:viewController2 animated:YES];
        ///////////////////////
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        NSLog(@"[MainViewController] View did load");
        
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(logoutHandler:) name:LOGOUT_NOTIFICATION object:self.view];
    }
    
    - (void)viewDidAppear:(BOOL)animated {
        BOOL isUserLoggedIn = [[NSUserDefaults standardUserDefaults] boolForKey:@"userLoggedIn"];
        
        if( !isUserLoggedIn ){
            [self showLoginViewAnimated:NO];
        }
    }
    
    - (void)logoutHandler:(NSNotification *)notification {
        NSLog(@"[MainViewController] Logout handler");
        [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"userLoggedIn"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        
        [self showLoginViewAnimated:YES];
    }
    
    - (void)showLoginViewAnimated:(BOOL)animated {
        NSLog(@"[MainViewController] Show login view controller");
        LoginViewController *loginVC = [[LoginViewController alloc] initWithNibName:nil bundle:nil];
        [self presentViewController:loginVC animated:animated completion:nil];
        
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
    }
    
    - (void)dealloc {
        NSLog(@"[MainViewController] Dealloc");
        [[NSNotificationCenter defaultCenter] removeObserver:self name:LOGOUT_NOTIFICATION object:self.view];
    }
    
    @end
    
    
    grazie dell'aiuto
  • Re: Property navigationController not found on object of type

    Forse sarebbe meglio che la mainviewcontroller caricasse invece della mainview direttamente la UITableview

    mettendo questo codice nella mainviewcontroller ma non mi è riuscito
    
        MyBooxViewViewController *viewController4 = [[MyBooxViewViewController alloc]init];
        [viewController4.delegate insertNewFruit: titolo: autore :editore: anno: urls];
        [self.Controller pushViewController:viewController4 animated:YES];
  • Re: Property navigationController not found on object of type

    MainViewController.m
    - (void)loadView {
        CGRect frame = [[UIScreen mainScreen] bounds];
        
        MainView *v = [[MainView alloc] initWithFrame:frame];
        [self setView:v];

    Come vedi tu istanzi la MainView col costruttore initWithFrame, e non col costruttore initWithNavigationController. Questo vuol dire che quando sei nella mainView, self.Controller è nil e quindi la push non funziona.

    Nel tuo metodo initWithNavigationController: aggiungi questo codice:
    [self createBackground];
            [self createLogoutButton];
            [self createDownloadButton];
    e nella mainViewController istanzia la MainView con questo costruttore, e non con l' initWithFrame.

    Scusami se ci metto un pò a rispondere, ma a parte che durante la giornata ho parecchio lavoro da fare, c'è anche il fatto che non avendo attualmente un mac, non ho un ambiente a disposizione. In pratica leggo ciò che mi scrivi, cerco di capire ciò che vuoi fare, cerco di ricordarmi i metodi e le callback (mo so 3 mesi che non tocco ios) e rispondo. Anche per questo ti dico sempre "fammi sapere", perchè non è detto che ciò che ti scriva sia corretto.

    Insomma, fammi sapere
  • Re: Property navigationController not found on object of type

    Allora questo se lo faccio non me li visualizza i pulsanti e il background anche se non da errore io ho provato a accorciare le cose caricandomi dal maincontroller direttamente la table view invece di passare per mainview e downloadview ma naturalmente mi da errore posto il codice magari ti accorgi subito cosa sto sbagliando
    
    #import "MainViewController.h"
    #import "MainView.h"
    #import "LoginViewController.h"
    #import "LoginNotificationNames.h"
    #import "MainNotificationNames.h"
    #import "DownloadViewController.h"
    #import "MyBooxViewViewController.h"
    #import "XMLReader.h"
    
    @interface MainViewController ()
    
    @end
    
    @implementation MainViewController
    
    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        
        if (self) {
            // Custom initialization
            NSLog(@"[MainViewController] Init");
            
        }
        
        return self;
    }
    
    - (void)loadView {
        //CGRect frame = [[UIScreen mainScreen] bounds];
        
        //MainView *v = [[MainView alloc] initWithFrame:frame];
        //[self setView:v];
        
        
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        NSLog(@"[MainViewController] View did load");
        
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(logoutHandler:) name:LOGOUT_NOTIFICATION object:self.view];
    }
    
    - (void)viewDidAppear:(BOOL)animated {
        BOOL isUserLoggedIn = [[NSUserDefaults standardUserDefaults] boolForKey:@"userLoggedIn"];
        
        if( !isUserLoggedIn ){
            [self showLoginViewAnimated:NO];
            
            /////////push new view
            //DownloadViewController *viewController2 = [[DownloadViewController alloc]initWithNibName:@"ViewController" bundle:nil];
            //[self.navigationController pushViewController:viewController2 animated:YES];
            ///////////////////////
            
            
            ////////////////
            /////////////////
            
            /////////////////////
            NSString *url = @"http://miosito.com/ebooks/filexml.xml";
            NSURLRequest *urlrequest = [ [NSURLRequest alloc] initWithURL: [NSURL URLWithString:url] ];
            NSData *returnData = [ NSURLConnection sendSynchronousRequest:urlrequest returningResponse: nil error: nil ];
            NSString *testXMLString = [[NSString alloc] initWithData:returnData encoding:NSASCIIStringEncoding];
            
            //////////////////
            
            //NSString *testXMLString = @"<items><item id=\"0001\" type=\"donut\"><name>Cake</name><ppu>0.55</ppu><batters><batter id=\"1001\">Regular</batter><batter id=\"1002\">Chocolate</batter><batter id=\"1003\">Blueberry</batter></batters><topping id=\"5001\">None</topping><topping id=\"5002\">Glazed</topping><topping id=\"5005\">Sugar</topping></item></items>";
            
            // Parse the XML into a dictionary
            NSError *parseError = nil;
            
            NSDictionary *dict = [XMLReader dictionaryForXMLString:testXMLString error:&parseError];
            NSMutableArray *ebook = [[NSMutableArray alloc] init];
            ebook = [[dict valueForKey:@"eboox"] valueForKey:@"ebook"];
            //Questo conterrà un array di dictionary, ogni dict è un utente
            
            NSMutableArray *autore = [[NSMutableArray alloc] init];
            NSMutableArray *titolo = [[NSMutableArray alloc] init];
            NSMutableArray *urls = [[NSMutableArray alloc] init];
            NSMutableArray *editore = [[NSMutableArray alloc] init];
            NSMutableArray *anno = [[NSMutableArray alloc] init];
            for (NSDictionary *user in ebook)
            {
                NSString *autoreString = [[user valueForKey:@"autore"] valueForKey:@"text"];
                NSString *titoloString = [[user valueForKey:@"titolo"] valueForKey:@"text"];
                NSString *urlsString = [[user valueForKey:@"url"] valueForKey:@"text"];
                NSString *editoreString = [[user valueForKey:@"editore"] valueForKey:@"text"];
                NSString *annoString = [[user valueForKey:@"anno"] valueForKey:@"text"];
                
                [autore addObject:autoreString];
                [titolo addObject:titoloString];
                [urls addObject:urlsString];
                [editore addObject:editoreString];
                [anno addObject: annoString];
            }
            
            
            int count = [titolo count];
            for(int i=0;i<count;i++)
            {
                id item1;
                id item2;
                id item3;
                id item4;
                id item5;
                item1 = [titolo objectAtIndex:i];
                item2 = [autore objectAtIndex:i];
                item3 = [urls objectAtIndex:i];
                item4 = [editore objectAtIndex:i];
                item5 = [anno objectAtIndex:i];
                
                NSLog(@"Found an Item: %@",item1);
                NSLog(@"Found an Item: %@",item2);
                NSLog(@"Found an Item: %@",item3);
                NSLog(@"Found an Item: %@",item4);
                NSLog(@"Found an Item: %@",item5);
            }
    
            
            MyBooxViewViewController *viewController4 = [[MyBooxViewViewController alloc]init];
            //Poi chiamo il metodo del delegato sull' istanza del secondo controller
            
            [viewController4.delegate insertNewFruit: titolo: autore :editore: anno: urls];
            //Infine pusho il controller
            [self.navigationController pushViewController:viewController4 animated:YES];
            
            ////////////////
        }
    }
    
    - (void)logoutHandler:(NSNotification *)notification {
        NSLog(@"[MainViewController] Logout handler");
        [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"userLoggedIn"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        
        [self showLoginViewAnimated:YES];
    }
    
    - (void)showLoginViewAnimated:(BOOL)animated {
        NSLog(@"[MainViewController] Show login view controller");
        LoginViewController *loginVC = [[LoginViewController alloc] initWithNibName:nil bundle:nil];
        [self presentViewController:loginVC animated:animated completion:nil];
        
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
    }
    
    - (void)dealloc {
        NSLog(@"[MainViewController] Dealloc");
        [[NSNotificationCenter defaultCenter] removeObserver:self name:LOGOUT_NOTIFICATION object:self.view];
    }
    
    @end
    

    Grazie mille del tuo aiuto ma come fai senza mac con tante altre cose a scrivere tutto questo codice perfetto c'hai xcode in testa io dopo che risolvo questo spero di non rompere piu per un po - le ultime parole famose
  • Re: Property navigationController not found on object of type

    Sei in un controller e nel viewDidAppear pushi un secondo controller, per poi pusharne un terzo dal primo controller. Mi sa che devi rivedere un attimo le tue idee

    Fai confusione tra i controller e le view. Spiegami questa applicazione precisamente che flusso deve avere e dimmi cosa fanno e i nomi dei controller associati ad ogni vista della tua applicazione (solitamente cosi si fa per avere il codice pulito, ma uno potrebbe anche avere un unico controller e switchare il contenuto di una sua uiview, anche se poi ti ritrovi un controller che deve gestire la logica di n viste, e non è carino ).

    Lasciamo perdere un secondo il codice, voglio capire bene cosa vuoi fare per provare a risolvere sto problema
  • Re: Property navigationController not found on object of type

    Allora attualmente c'è un login che è questo http://blog.the-nerd.be/2013/03/objective-c-login-system-tutorial/ e che è fatto con un logincontroller un loginview un mainviewcontroller e una mainview
    fatto il login si rimane nella mainview
    poi c'ho i contenuti della app: per ora c'è una view con solamente un pulsante e cliccato il pulsante legge un xml e sposta su una tableview che cosi viene popolata dagli array ricavati dall'xml al tocco del pulsante

    ora io volevo fare cosi che una volta fatto il login la maincontroller aggiungesse subito la UITableview facendo direttamente il lavoro che fa adesso il pulsante senza nemmeno premere alcun pulsante e quindi dovrei mettre questo codice nel main controller o nella mainview in modo da saltare due passaggi inutili

    cosi fatto il login vorrei che eseguisse questo cod ma non so qual è il punto giusto nel sistema di login dove metterlo

    -(IBAction)startDownload:(id)sender{
        
        UIAlertView *alert = [[UIAlertView alloc]
                              initWithTitle:@"what's up"
                              message:[NSString stringWithFormat:@"iPad %@",  @"yes"]
                              //message:[NSString stringWithFormat:@"iPad %d", indexPath.row]
                              delegate:self
                              cancelButtonTitle:@"OK"
                              otherButtonTitles:nil];
        [alert show];
        
        //MyBooxViewViewController *viewController4 = [[MyBooxViewViewController alloc]initWithNibName:@"MyBooxViewViewController" bundle:nil];
        
        //[self presentModalViewController:viewController4 animated:YES];
        
        /////////////////////
        NSString *url = @"http://miosito.com/ebooks/filexml.xml";
        NSURLRequest *urlrequest = [ [NSURLRequest alloc] initWithURL: [NSURL URLWithString:url] ];
        NSData *returnData = [ NSURLConnection sendSynchronousRequest:urlrequest returningResponse: nil error: nil ];
        NSString *testXMLString = [[NSString alloc] initWithData:returnData encoding:NSASCIIStringEncoding];
        
        //////////////////
                                                                  
        //NSString *testXMLString = @"<items><item id=\"0001\" type=\"donut\"><name>Cake</name><ppu>0.55</ppu><batters><batter id=\"1001\">Regular</batter><batter id=\"1002\">Chocolate</batter><batter id=\"1003\">Blueberry</batter></batters><topping id=\"5001\">None</topping><topping id=\"5002\">Glazed</topping><topping id=\"5005\">Sugar</topping></item></items>";
        
        // Parse the XML into a dictionary
        NSError *parseError = nil;
        
        NSDictionary *dict = [XMLReader dictionaryForXMLString:testXMLString error:&parseError];
        NSMutableArray *ebook = [[NSMutableArray alloc] init];
        ebook = [[dict valueForKey:@"eboox"] valueForKey:@"ebook"];
        //Questo conterrà un array di dictionary, ogni dict è un utente
        
        NSMutableArray *autore = [[NSMutableArray alloc] init];
        NSMutableArray *titolo = [[NSMutableArray alloc] init];
        NSMutableArray *urls = [[NSMutableArray alloc] init];
        NSMutableArray *editore = [[NSMutableArray alloc] init];
        NSMutableArray *anno = [[NSMutableArray alloc] init];
        for (NSDictionary *user in ebook)
        {
            NSString *autoreString = [[user valueForKey:@"autore"] valueForKey:@"text"];
            NSString *titoloString = [[user valueForKey:@"titolo"] valueForKey:@"text"];
            NSString *urlsString = [[user valueForKey:@"url"] valueForKey:@"text"];
            NSString *editoreString = [[user valueForKey:@"editore"] valueForKey:@"text"];
            NSString *annoString = [[user valueForKey:@"anno"] valueForKey:@"text"];
            
            [autore addObject:autoreString];
            [titolo addObject:titoloString];
            [urls addObject:urlsString];
            [editore addObject:editoreString];
            [anno addObject: annoString];
        }
        
        
        int count = [titolo count];
        for(int i=0;i<count;i++)
        {
        id item1;
        id item2;
        id item3;
        id item4;
        id item5;
        item1 = [titolo objectAtIndex:i];
        item2 = [autore objectAtIndex:i];
        item3 = [urls objectAtIndex:i];
        item4 = [editore objectAtIndex:i];
        item5 = [anno objectAtIndex:i];
            
        NSLog(@"Found an Item: %@",item1);
        NSLog(@"Found an Item: %@",item2);
        NSLog(@"Found an Item: %@",item3);
        NSLog(@"Found an Item: %@",item4);
        NSLog(@"Found an Item: %@",item5);
        }
        
          ///////////////////////////
        //DOWNLOAD FUNZIONANTE
        ////////////////////////////
        /*
        NSString *stringURL = @"http://www.zeroboox.com/eboox/XSelf_Publishing_Hack_2.0.epub";
        NSURL  *urlx = [NSURL URLWithString:stringURL];
        NSData *data = [NSData dataWithContentsOfURL:urlx];
        //NSData *data = UIImageJPEGRepresentation(img, 1.0);
        
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"XSelf_Publishing_Hack_2.0.epub"];
        [data writeToFile:appFile atomically:YES];
         */
        ///////////////////////////////
        //////////////////////////////
        
        
        
        //Prima istanzio il secondo controller, che nel suo costruttore si setta come delegato di se stesso
        MyBooxViewViewController *viewController4 = [[MyBooxViewViewController alloc]init];
        //Poi chiamo il metodo del delegato sull' istanza del secondo controller
        
        [viewController4.delegate insertNewFruit: titolo: autore :editore: anno: urls];
        //Infine pusho il controller
        [self.navigationController pushViewController:viewController4 animated:YES];
    }
    
    grazie per la pazienza
  • Re: Property navigationController not found on object of type

    E allora devi semplicemente implementare la tua tableview nel mainviewcontroller. Sai come funzionano le tableview? ci sono una serie di callback da implementare per popolare le celle coi tuoi dati.



    qui trovi una guida alle tableview, sta roba devi implementarla nel tuo mainviewcontroller. Se incontri problemi posta
  • Re: Property navigationController not found on object of type

    Grazie mille!! funziona!! col tuo aiuto ho imparato tante cose !!!
    ciao non ti dico alla prossima seno mi spari
  • Re: Property navigationController not found on object of type

    Apposto, mi fa piacere. Comunque sta tranquillo, se non m andava di rispondere non stavo qui alla prossima
Devi accedere o registrarti per scrivere nel forum
12 risposte