【问题标题】:Changing detail in splitviewcontroller using storyboards使用情节提要更改 splitviewcontroller 中的细节
【发布时间】:2014-08-27 03:21:34
【问题描述】:

我已经转了几个小时了。我有一个 Xamarin 故事板应用程序,其中有一个容器视图,其中嵌入了一个拆分视图控制器。我正在尝试根据表格上的用户选择来更改详细视图。在我的表 ViewController 中,我有:

    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 配方没有使用情节提要,我找不到正确的方法。

【问题讨论】:

    标签: c# ios xamarin.ios storyboard xamarin


    【解决方案1】:

    您可以尝试修改导航控制器的堆栈...类似这样的东西(使用有限的 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-18
      • 2015-05-05
      • 2012-02-09
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多