title: NSInvalidArgumentException "Unrecognized selector sent to instance" (using MPMoviePlayerController)
body: <p>Well, I have a TableView in a RootViewController with a DetailViewController for the display of the information of the single record.
  In the Detail page i have to play a multimedia file and i'm using the framework MediaPlayer, according to this guide:
  <a href="http://www.techotopia.com/index.php/Video_Playback_from_within_an_iOS_4_iPhone_Application" rel="nofollow">http://www.techotopia.com/index.php/Video_Playback_from_within_an_iOS_4_iPhone_Application</a></p>
  
  <p>it seems all ok, but when i click on the play button i have this error:</p>
  
  <pre><code> -[DetailsViewController playmovie]: unrecognized selector sent to instance 0x9117f60
  
  *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[DetailsViewController playmovie]: unrecognized selector sent to instance 0x9117f60'
  </code></pre>
  
  <p>These are my files:</p>
  
  <p><strong>In the AppDelegate</strong> I use this navigation controller:</p>
  
  <pre><code>[...]
  
  // Create a table view controller
      RootViewController *rootViewController = [[RootViewController alloc]
                                                initWithStyle:UITableViewStylePlain];
  
      rootViewController.managedObjectContext = context;
      rootViewController.entityName = @"Porti";
  
  
      UINavigationController *aNavigationController = [[UINavigationController alloc]
                                                       initWithRootViewController:rootViewController];
  
      self.navigationController = aNavigationController;
  
  
      UIBarButtonItem *homeButton;
      homeButton = [[[UIBarButtonItem alloc] initWithTitle:@"              Inizio              " style:UIBarButtonItemStyleBordered target:self action:@selector(home)] autorelease];
  
      UIBarButtonItem *barButton;
      barButton = [[[UIBarButtonItem alloc] initWithTitle:@"      Mappa dei porti       " style:UIBarButtonItemStyleBordered target:self action:@selector(caricamappa)] autorelease];
  
      [toolbar setItems:[NSArray arrayWithObjects: homeButton, barButton, nil]];
  
  
      [window addSubview:[navigationController view]];
      [window addSubview:toolbar];
      [window makeKeyAndVisible];
  
      [rootViewController release];
      [aNavigationController release];
  </code></pre>
  
  <p><strong>and in the RootViewController</strong> I use this instruction to pass to the DetailViewController:</p>
  
  <pre><code>//Push the new table view on the stack
      [self.navigationController pushViewController:detailsView animated:YES];
      [detailsView release];
  </code></pre>
  
  <p><strong>DetailsViewController.h</strong></p>
  
  <pre><code>#import &lt;UIKit/UIKit.h&gt;
  #import &lt;MessageUI/MessageUI.h&gt;
  #import "MLUtils.h"
  #import &lt;MediaPlayer/MediaPlayer.h&gt;
  
  @interface DetailsViewController : UIViewController {
      IBOutlet UILabel *titleLabel;
      IBOutlet UILabel *descriptionLabel;
      IBOutlet UIScrollView *descriptionScrollView;
      NSString *cityName;
      NSString *nomefile;
      NSString *extfile;
      NSString *description;
  }
  
  @property (nonatomic, retain) UILabel *titleLabel;
  @property (nonatomic, retain) UILabel *descriptionLabel;
  @property (nonatomic, retain) UIScrollView *descriptionScrollView;
  @property (nonatomic, retain) NSString *cityName;
  @property (nonatomic, retain) NSString *description;
  @property (nonatomic, retain) NSString *nomefile;
  @property (nonatomic, retain) NSString *extfile;
  
  - (IBAction)playmovie:(id)sender;
  
  @end
  </code></pre>
  
  <p><strong>and this is the DetailsViewController.m</strong></p>
  
  <pre><code>   #import "DetailsViewController.h"
  
      @implementation DetailsViewController
      @synthesize titleLabel, descriptionLabel, descriptionScrollView;
      @synthesize cityName,description,nomefile, extfile;
  
  
  
     // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
      - (void)viewDidLoad {
          [super viewDidLoad];
             [self.titleLabel setText:self.title];
             [self.descriptionLabel setText:self.description];
  
      float textHeight = [MLUtils calculateHeightOfTextFromWidth:self.description : descriptionLabel.font :descriptionLabel.frame.size.width :UILineBreakModeWordWrap];
  
          CGRect frame = descriptionLabel.frame;
          frame.size.height = textHeight;
          descriptionLabel.frame = frame;
  
          CGSize contentSize = descriptionScrollView.contentSize;
          contentSize.height = textHeight;
          descriptionScrollView.contentSize = contentSize;
      }
  
  -(void)playmovie:(id)sender
      {
  
          NSString *appNomeFile = self.nomefile;
          NSString *appExtFile = self.extfile;
  
          NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:appNomeFile ofType:appExtFile]];
  
          MPMoviePlayerController *moviePlayer = 
          [[MPMoviePlayerController alloc] initWithContentURL:url];
  
          [[NSNotificationCenter defaultCenter] addObserver:self
                                                   selector:@selector(moviePlayBackDidFinish:)
                                                       name:MPMoviePlayerPlaybackDidFinishNotification
                                                     object:moviePlayer];
  
          moviePlayer.controlStyle = MPMovieControlStyleDefault;
          moviePlayer.shouldAutoplay = YES;
  
  
          [self.view addSubview:moviePlayer.view];
  
          [moviePlayer setFullscreen:YES animated:YES];
      }
  
      - (void) moviePlayBackDidFinish:(NSNotification*)notification {
  
          MPMoviePlayerController *moviePlayer = [notification object];
  
          [[NSNotificationCenter defaultCenter] removeObserver:self      
                                                          name:MPMoviePlayerPlaybackDidFinishNotification
                                                        object:moviePlayer];
  
          if ([moviePlayer 
               respondsToSelector:@selector(setFullscreen:animated:)])
          {
              [moviePlayer.view removeFromSuperview];
          }
          [moviePlayer release];
      }
  
      - (void)didReceiveMemoryWarning {
          // Releases the view if it doesn't have a superview.
          [super didReceiveMemoryWarning];
  
          // Release any cached data, images, etc that aren't in use.
      }
  
      - (void)viewDidUnload {
          // Release any retained subviews of the main view.
          // e.g. self.myOutlet = nil;
      }
  
      // Override to allow orientations other than the default portrait orientation.
      - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
          // Return YES for supported orientations
          //return (interfaceOrientation == UIInterfaceOrientationPortrait);
          return YES;
      }
  
      - (void)dealloc {
          [titleLabel release];
          [descriptionLabel release];[descriptionScrollView release];
          [cityName release];
          [description release];
          [nomefile release];
          [extfile release];
          [super dealloc];
      }
  
      @end
  </code></pre>
  
  <p>My question is: where is my error ? I imagine it is in the call of the playmovie method, but I can't figure out a solution!</p>
  
  <p>P.S.<br>
  I've accidentally erased a comment, I'm so sorry! =(</p>