Emil Elkjær
Emil Elkjær

Reputation: 685

RowSelected - NullReferenceException

I am trying to make so when I press a row on my UITableView, it will send some data to another UIViewController and make a seque.

However when testing it out, it gives me:

System.NullReferenceException has been thrown Object reference not set to an instance of an object

The error seems to show here:

viewController.NavigationController.PushViewController (detail, true);

Here is my "RowSelected"

public override void RowSelected (UITableView tableView, NSIndexPath indexPath)
{
    Console.WriteLine ("Row: " + tableItems [indexPath.Row].Heading);

    //new UIAlertView("Row Selected", tableItems[indexPath.Row].Heading, null, "OK", null).Show();
    tableView.DeselectRow (indexPath, true);

    // Specially for Storyboard !!
    var detail = viewController.Storyboard.InstantiateViewController("detail") as HolsteinItemViewController;
    detail.Title = tableItems[indexPath.Row].Heading;
    detail.LoadUrl (tableItems[indexPath.Row].SubHeading);
    viewController.NavigationController.PushViewController (detail, true);
}

Exception caught:

System.NullReferenceException: Object reference not set to an instance of an object
  at Holstein.TableSource.RowSelected (MonoTouch.UIKit.UITableView tableView, MonoTouch.Foundation.NSIndexPath indexPath) [0x0008e] in /Users/Emil/Projects/Holstein/Holstein/Code/TableSource.cs:41
  at at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr)
  at MonoTouch.UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x0004c] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:38
  at Holstein.Application.Main (System.String[] args) [0x00008] in /Users/Emil/Projects/Holstein/Holstein/Main.cs:16

TableSource.cs line 46

viewController.NavigationController.PushViewController (detail, true);

Main.cs line 16

UIApplication.Main (args, null, "AppDelegate");

Upvotes: 3

Views: 1444

Answers (1)

Dimitris Tavlikos
Dimitris Tavlikos

Reputation: 8170

Your viewController.NavigationController property is null. According to iOS UIViewController reference here

If the receiver or one of its ancestors is a child of a navigation controller, this property contains the owning navigation controller. This property is nil if the view controller is not embedded inside a navigation controller.

Apparently, that view controller is not part of a UINavigationController stack.

Upvotes: 4

Related Questions