2011-11-29 87 views
0

如何从我的BasisViewController中的AccessoryButtonTapped按钮打开一个新窗口。现在我有这个打开,但问题是我无法找到的NavigationController,因为我是固有的UITableViewSource。MonoTouch无法从AccessoryButtonTapped打开新窗口

Opskrift ops = new Opskrift(item.ImageName, item.Name, item.optionTxt, item.SubHeading) 
this.NavigationController.PushViewController(this.opskrift, true); 

如果我使用ops.NavigationController.PushViewController(this.opskrift, true);

我得到一个对象引用未设置到对象异常的实例。

回答

3

将其通过它的构造给你UITableViewSource继承类访问你的控制器:

public class MyTableSource : UITableViewSource 
{ 

    private BasisViewController controller; 
    public MyTableSource(BasisViewController parentController) 
    { 
     this.controller = parentController; 
    } 

    //use like this in a method: 
    //this.controller.NavigationController.PushViewController(opskrift, true); 
} 

,因为它不是一个导航控制器的堆栈的一部分,当你初始化(你Opfskrift控制器的NavigationController属性返回null =尚未在导航控制器中“推”)。当然,BasisViewController也必须属于NavigationController属性的导航控制器,以包含除null以外的内容。

+0

我得到一个错误:\t Example_CustomUITableViewCells.MyTableSource“不实现继承的抽象成员'MonoTouch.UIKit.UITableViewSource.RowsInSection(MonoTouch.UIKit.UITableView,INT)” Example_CustomUITableViewCells.MyTableSource”不实现继承的抽象成员'MonoTouch.UIKit.UITableViewSource.GetCell(MonoTouch.UIKit.UITableView,MonoTouch.Foundation.NSIndexPath)' 我应该实现它们并返回一些空值。 – mortenstarck

+0

这两个方法是必需的,以便您的表视图可以创建要显示的项目列表。如果您从GetCell返回null,并从RowsInSection返回0,则表格视图中不会显示任何项目。 –