使用故事板改变splitviewcontroller中的细节

本文关键字:细节 splitviewcontroller 改变 故事 | 更新日期: 2023-09-27 18:11:34

我已经绕了好几个小时了。我有一个Xamarin故事板应用,我有一个容器视图,我在其中嵌入了分屏视图控制器。我试图根据表上的用户选择更改详细信息视图。在我的表格视图控制器中,我有:

    public override void ViewDidLoad()
    {
        base.ViewDidLoad ();
        string[] tableItems = new string[] {"Vegetables","Fruits","Flower Buds","Legumes","Bulbs","Tubers"};
        this.TableView.Source = new TableSource (tableItems, this);
        this.TableView.AllowsSelection = true;
        this.TableView.ReloadData();
    }

然后在我的表源中,我有以下应该改变细节。注意,viewController1是表视图控制器,在设置源时传递给它。

    public override void RowSelected (UITableView tableView, NSIndexPath indexPath)
    {
        new UIAlertView("Row Selected", tableItems[indexPath.Row], null, "OK", null).Show();
        tableView.DeselectRow (indexPath, true); // iOS convention is to remove the highlight
        viewController1.ParentViewController.PerformSegue("DetailSegue", viewController1.ParentViewController);
    }

我创建了一个segue从我的分屏视图控制器到我的细节视图控制器叫做DetailSegue,这就是我调用的。这是错误的,但不管怎样,我都不认为调用segue是正确的方法

我也试过了:

viewController1.ParentViewController[1] = new TestDetailViewController();

但是当我使用故事板时,TestDetailViewController方法期望intPtr句柄,我不确定如何引用这个。Xamarin的分屏视图控制器配方没有使用故事板,我找不到正确的方法。

使用故事板改变splitviewcontroller中的细节

你可以尝试修改导航控制器的堆栈…像这样的东西(用有限的Xamarin知识翻译)…

public override void RowSelected (UITableView tableView, NSIndexPath indexPath) {
UINavigationController navController = self.splitViewController.viewControllers.lastObject;
NSArray newStack = new NSArray.arrayWithObjects(newController, nil);
navController.setViewControllers(newStack);
}

再一次,我对。net生疏了…这是我翻译的Objective-C…

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UINavigationController *navController = [[[self splitViewController] viewControllers] lastObject]
NSArray *newStack = [NSArray arrayWithObjects:newController, nil ];
[navController setViewControllers:newStack];
}

来源:http://www.dharmaworks.net/Consulting/switching-detail-views-in-uisplitviewcontroller-with-ios7