MonoTouch - 将UIActionSheet添加到ViewController的顶部导航栏

时间:2013-05-04 11:35:54

标签: c# xamarin.ios uiactionsheet

我有以下UIActionSheet。 如何将其添加到我的顶部导航栏? 最好是最右边的按钮。

var sheet = new UIActionSheet ("");
            sheet.AddButton ("Discard Picture");
            sheet.AddButton ("Pick New Picture");
            sheet.AddButton ("Cancel");
            sheet.CancelButtonIndex = 2;

            // Dummy buttons to preserve the space for the UIImageView
            for (int i = 0; i < 4; i++) {
                sheet.AddButton("");
                sheet.Subviews[i+4].Alpha = 0; // And of course it's better to hide them
            }

            var subView = new UIImageView();
            subView.ContentMode = UIViewContentMode.ScaleAspectFill;
            subView.Frame = new RectangleF(23,185,275,210);

            // Late Steve Jobs loved rounded corners. Let's have some respect for him
            subView.Layer.CornerRadius = 10; 
            subView.Layer.MasksToBounds = true;
            subView.Layer.BorderColor = UIColor.Black.CGColor;
            sheet.AddSubview(subView);

            NavigationController.Add(sheet);

1 个答案:

答案 0 :(得分:2)

您可以使用ShowFrom方法显示ActionSheet。

特别是,ShowFromToolbar显示顶部工具栏按钮中的工作表。

以下示例以不同方式显示工作表,具体取决于您是使用平板电脑还是手机:

    void ActionMenu()
    {
        //_actionSheet = new UIActionSheet("");
        UIActionSheet actionSheet = new UIActionSheet (
            "Customer Actions", 
            null, 
            "Cancel", 
            "Delete Customer",
             new string[] {"Change Customer"});

        actionSheet.Style = UIActionSheetStyle.Default;
        actionSheet.Clicked += delegate(object sender, UIButtonEventArgs args) {
            switch (args.ButtonIndex)
            {
                case 0: DeleteCustomer(); break;
                case 1: ChangeCustomer(); break;
            }
        };

        if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Phone)
            actionSheet.ShowFromToolbar(NavigationController.Toolbar);
        else
            actionSheet.ShowFrom(NavigationItem.RightBarButtonItem, true);
    }

https://github.com/slodge/MvvmCross-Tutorials/blob/master/Sample%20-%20CustomerManagement/CustomerManagement/CustomerManagement.Touch/Views/CustomerView.cs#L67