Domanda

Ho problemi a passare tra le opinioni e ho bisogno di aiuto. Questo è in qualche modo conviluto, quindi abbi pazienza con me per favore.

Ho un controller Uinavigation chiamato JobsNavController. La prima vista in JobsNavController detiene un UableViewController chiamato JobsTableViewController con un pennino collegato chiamato JobTableView.xib]. Voglio aggiungere un Add Uibutton all'interno dell'UinavController per "creare un nuovo lavoro". Quando è stato cliccato, dovrebbe capovolgere JobTableView.xib al mio JobCreateViewController pennino chiamato JobCreateView.xib. Poiché il pulsante "Aggiungi" si trova all'interno di UinavController, inserisco il codice IBAction all'interno JobsNavController.h and .m.

Ecco il JobsNavController.h

#import <UIKit/UIKit.h>
@class JobCreateViewController, JobsTableViewController;

@interface JobsNavController : UINavigationController {
    IBOutlet UIButton *btnJobCreate;
    IBOutlet JobCreateViewController *jobCreateViewController;
        IBOutlet JobsTableViewController *jobsTableViewController;
}
-(IBAction)tellDelegateToFlip:(id)sender;

@property (nonatomic, retain) UIButton *btnJobCreate;
@property (nonatomic, retain) IBOutlet JobCreateViewController *jobCreateViewController;
@property (nonatomic, retain) IBOutlet JobsTableViewController *jobsTableViewController;

@end

Ed ecco il mio JobsNavController.m

#import "JobsNavController.h", "Time_Blogger1AppDelegate.h", "JobsTableViewController.h"
@implementation JobsNavController
@synthesize btnJobCreate, jobCreateViewController, jobsTableViewController;
.....
-(void)tellDelegateToFlip {
    JobCreateViewController *jobAddView = [jobCreateViewController initWithNibName:@"JobCreateView" bundle:nil];

    [self setJobCreateViewController:jobAddView];
    [jobAddView release];

    UIViewController *transitionTo = jobCreateViewController;

    //create view animation block
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1.25];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];
    [jobsTableViewController.view removeFromSuperview];
    [self.view insertSubview:transitionTo.view atIndex:0];
    [UIView commitAnimations];

    [transitionTo release];
}

Non ricevo errori di build/compilazione ma il simulatore lancia un'eccezione quando faccio clic sul pulsante che indica:

2012-01-22 19:19:22.895 Time-Blogger1[4209:f803] 
-[JobsNavController tellDelegateToFlip:]: unrecognized selector sent to instance 0x6c85e80 2012-01-22 19:19:22.897 Time-Blogger1[4209:f803] 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 
'-[JobsNavController tellDelegateToFlip:]: unrecognized selector sent to instance 0x6c85e80'
È stato utile?

Soluzione

Quando chiami tellDelegateToFlip Assicurati di farlo senza parametri: questo è ciò che sta causando l'incidente. Se noti nel rapporto sul crash, dice che il selettore non riconosciuto tellDelegateToFlip: viene inviato a tua istanza. Notare il colon che viene dopo il nome del metodo. Ciò significa che ovunque tu abbia chiamato il metodo, hai inviato un oggetto con esso. Se stai usando performSelector:withObject:afterDelay: accertati di non Usa un colon.

Modificare:

Invece di:

UIViewController* transitionTo = jobCreateViewController;

Perché non usi solo:

JobCreateViewController* transitionTo = jobCreateViewController;

Oppure potresti lanciarlo, supponendolo JobCreateViewController eredita da UiviewController.

Altri suggerimenti

Implementazione errata del metodo:

-(IBAction)tellDelegateToFlip:(id)sender;

dovrebbe essere:

-(IBAction)tellDelegateToFlip:(id)sender {
...
}

Nel tuo lavoro innoller.m

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top