RowSelected – NullReferenceException

当我在UITableView上按一行时,我试图这样做,它会将一些数据发送到另一个UIViewController并制作一个seque。

但是在测试时,它给了我:

已抛出System.NullReferenceException对象引用未设置为对象的实例

错误似乎在这里显示:

viewController.NavigationController.PushViewController (detail, true); 

这是我的“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:

 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第46行

 viewController.NavigationController.PushViewController (detail, true); 

Main.cs第16行

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

您的viewController.NavigationController属性为null。 根据iOS UIViewController 这里的参考

如果接收器或其祖先之一是导航控制器的子节点,则此属性包含拥有的导航控制器。 如果视图控制器未嵌入导航控制器内,则此属性为nil。

显然,该视图控制器不是UINavigationController堆栈的一部分。

Interesting Posts