C#(Xamarin iOS)如何从UITableView导航到其他ViewController?

时间:2017-08-22 05:59:29

标签: c# ios xamarin

我应该在RowSelected中添加什么代码?

我已经使用过这个但没有运气:/。

public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
{
    var window = UIApplication.SharedApplication.KeyWindow;
    var vc = window.RootViewController;
    while (vc.PresentedViewController != null)
    {
        vc = vc.PresentedViewController;
    }
    mainnearmisses myTarget = (UIViewController)vc.Storyboard.InstantiateViewController("mnearm") as mainnearmisses;
    myTarget.email = locations[indexPath.Row].shopname + "";
    vc.PresentViewController(myTarget, true, null);
}

1 个答案:

答案 0 :(得分:0)

为您提供一些建议。

<强> 1。将ViewController本身设置为dataSource的初始化构造函数中的参数。

ViewController中的

this.TableView.Source = new TableSource(tableItems.ToArray(), this);

in dataSource

ViewController owner;
public TableSource (string[] items, ViewController owner)
{
    tableItems = items;
    this.owner = owner;
}

这可以使您的代码轻松导航到另一个VC。 只需使用它而不是在Windows上查找当前的vc。

this.owner.PresentViewController(myTarget, true, null);

<强> 2。如果tableView填满了屏幕,则可以将ViewController更改为UITableViewController 。

因为它继承了IUITableViewDataSource的形式,所以它可以在自己的类中处理事件(即该方法创建tableView)。

3.如上所述,检查viewController是否存在

检查storyboard id并在项目中找到相应的viewController。