0

这可能是一个微不足道的东西,但我是新的xamarin/monotouch或iPhone/IOS开发, 我试图让一个应用程序(排序的画廊+邮件)在我想分享图像。长按 它应该打开联系人,从我可以从联系人中选择人员,它应该带我到 邮寄视图。我不想这样做,只是想使用“PresentModalViewController”切换视图如何切换视图表单通讯录邮寄视图

现在我正在获取地址簿,但只要我选择联系人而不是显示 邮件查看它回到主页。 我甚至在邮寄视图关闭后试图解散视图,但输出仍然是相同的。 请帮助解决这个问题。

我在做什么如下:(只合并对Xamarin网站给出的两个方案)

using System; 
using System.Drawing; 
using MonoTouch.Foundation; 
using MonoTouch.UIKit; 
using MonoTouch.AddressBookUI; 
using MonoTouch.MessageUI; 

namespace ChooseContact 
{ 
    public partial class ChooseContactViewController : UIViewController 
    { 


     public ChooseContactViewController() : base ("ChooseContactViewController", null) 
     { 
     } 

     public override void DidReceiveMemoryWarning() 
     { 
      // Releases the view if it doesn't have a superview. 
      base.DidReceiveMemoryWarning(); 

      // Release any cached data, images, etc that aren't in use. 
     } 

     public override void ViewDidLoad() 
     { 
      base.ViewDidLoad(); 
      ABPeoplePickerNavigationController _contactController; 
      UIButton _chooseContact; 
      UILabel _contactName; 
      _chooseContact = UIButton.FromType (UIButtonType.RoundedRect); 
      _chooseContact.Frame = new RectangleF (10, 10, 200, 50); 
      _chooseContact.SetTitle ("Choose a Contact", UIControlState.Normal); 
      _contactName = new UILabel{Frame = new RectangleF (10, 70, 200, 50)}; 

      View.AddSubviews (_chooseContact, _contactName); 

      _contactController = new ABPeoplePickerNavigationController(); 

      _chooseContact.TouchUpInside += delegate { 
       this.PresentModalViewController (_contactController, true); }; 


      _contactController.SelectPerson += delegate(object sender, ABPeoplePickerSelectPersonEventArgs e) { 
       //_contactName.Text = string.Format(e.Person.GetEmails());   
       _contactName.Text = String.Format ("{0} {1}", e.Person.FirstName, e.Person.LastName); 

       _contactController.DismissModalViewControllerAnimated (true); 

       MFMailComposeViewController _mailController; 
       string[] Emailid = {"[email protected]"}; 

       _mailController = new MFMailComposeViewController(); 
       _mailController.SetToRecipients (Emailid); 

       _mailController.SetSubject ("mail test"); 
       _mailController.SetMessageBody ("this is a test", false); 
       _mailController.Finished += (object s, MFComposeResultEventArgs args) => { 

        Console.WriteLine (args.Result.ToString()); 

        args.Controller.DismissModalViewControllerAnimated (true); 
       }; 

        this.PresentModalViewController (_mailController, true); 




      }; 
     } 

     public override void ViewDidUnload() 
     { 
      base.ViewDidUnload(); 

      // Clear any references to subviews of the main view in order to 
      // allow the Garbage Collector to collect them sooner. 
      // 
      // e.g. myOutlet.Dispose(); myOutlet = null; 

      ReleaseDesignerOutlets(); 
     } 

     public override bool ShouldAutorotateToInterfaceOrientation (UIInterfaceOrientation toInterfaceOrientation) 
     { 
      // Return true for supported orientations 
      return (toInterfaceOrientation != UIInterfaceOrientation.PortraitUpsideDown); 
     } 

    } 
} 

回答

0

尝试删除这条线

_contactController.DismissModalViewControllerAnimated (true); 
+0

dosent工作,它冻结,我选择联系人并给我以下警告: ChooseContact [499:c07]警告:尝试在上呈现其视图不在窗口层次结构中的! – hadzy