Как переключить просмотр формы адресной книги на просмотр рассылки

Это может быть тривиальной вещью, но я новичок в разработке xamarin/monotouch или iPhone/IOS, я пытаюсь создать приложение (своего рода галерея + почта), в котором я хочу поделиться изображением. При длительном нажатии он должен открыть контакты откуда я могу выбрать человека из контакта, и он должен привести меня к просмотру рассылки. Я не хочу делать это с помощью «pushview», а хочу просто переключать представления с помощью «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);
        }

    }
}

person hadzy    schedule 01.06.2013    source источник


Ответы (1)


Попробуйте удалить эту строку

_contactController.DismissModalViewControllerAnimated (true);
person Jason    schedule 01.06.2013
comment
пока не работает, он зависает, когда я выбираю контакт, и выдает следующее предупреждение: ChooseContact[499:c07] Предупреждение: попытка представить ‹MFMailComposeViewController: 0x12369c70› на ‹ChooseContactViewController: 0xe1eb220›, представление которого не находится в иерархии окон! - person hadzy; 03.06.2013