title: iOS: Methods of ViewController subclass not visible in other classes
body: <p>I'm currently trying to develop an iPhone application.
  Most things are working as I would expect and prefer.</p>
  
  <p>Right now the issue I'm having is that when adding methods to one of my ViewControllers the methods are not visible from other parts of my applications.</p>
  
  <p>When I add the same methods, with the same signature to my other view controllers they will be visible.</p>
  
  <p>I've googled, browsed stackoverflow, reread, copy/pasted, and prayed to the spaghetti monster for divine insight, but to no avail.</p>
  
  <p>There must be some minor detail, that I in my folly am overlooking. I hope you will be able to help me!</p>
  
  <h2>InfoPageViewController.h</h2>
  
  <pre><code>#import &lt;UIKit/UIKit.h&gt;
  #import "DB.h"
  
  @interface InfoPageViewController : UIViewController
  {
      IBOutlet UIWebView* wv;
      DB* db;
  }
  
  @property (retain, nonatomic) IBOutlet UIWebView* wv;
  
  -(void) reloadInfoPage;
  @end
  </code></pre>
  
  <h2>InfoPageViewController.m</h2>
  
  <pre><code>#import "InfoPageViewController.h"
  @interface InfoPageViewController ()
  
  @end
  
  
   @implementation InfoPageViewController
   @synthesize wv;
  
  - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
  {
      self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
      if (self) {
          self.title = NSLocalizedString(@"Information", @"Information");
          self.tabBarItem.image = [UIImage imageNamed:@"TabIcon-Settings"];
          db = [[DB alloc] init];
  
          // Custom initialization
      }
  
      return self;
  }
  
  - (void)viewDidLoad
  {
     [super viewDidLoad];
     // Do any additional setup after loading the view from its nib.    
  
     DBInfoPage* dbip = [db getInfopage];
     [wv loadHTMLString:dbip.html baseURL:nil];
     //NSLog(@"word%@", dbip.html);
     [self reloadInfoPage];
  }
  
  - (void)viewDidUnload
  {
      [super viewDidUnload];
      // Release any retained subviews of the main view.
      // e.g. self.myOutlet = nil;
  }
  
  - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
  {
      return (interfaceOrientation == UIInterfaceOrientationPortrait);
  }
  
  -(void)reloadInfoPage
  {
      DBInfoPage* dbip = [db getInfopage];
      [wv loadHTMLString:dbip.html baseURL:nil];
      NSLog(@"reloading infopage%@", @"");
  }
  
  @end
  </code></pre>
  
  <h2>infoviewtest.h</h2>
  
  <pre><code>#import &lt;UIKit/UIKit.h&gt;
  #import "InfoPageViewController.h"
  @interface infoviewtest : NSObject
  
  @end
  </code></pre>
  
  <h2>infoviewtest.m</h2>
  
  <pre><code>#import "infoviewtest.h"
  
  @implementation infoviewtest
  -(void)test
  {
      InfoPageViewController* ivc = [[InfoPageViewController alloc] init];
      [ivc reloadInfoPage];
  }
  @end
  </code></pre>
  
  <p>This yields an error of "No visible @interface for 'InfoPageViewController' declares the selector 'reloadInfoPage'.</p>
  
  <p>I have also tried to use autocomplete to show me the available methods of the 'InfoPageViewController', this yields a list not containing 'reloadInfoPage', similarly the instance variable 'wv' is not visible from outside of the scope of the class.</p>
  
  <p>I have tried closing and reopening xcode, as well as restart the computer.
  I have also tried to 'clean' the project.</p>
  
  <p>Any help will be greatly appreciated by the parts of my hair, not yet pulled in frustration.</p>
  
  <p>If I have been lacking in providing information, please request and I'll do my best to respond.</p>
  
  <p>Johan Abildskov</p>