public AddJokeView() : base(UITableViewStyle.Grouped, null) { var title = new EntryElement("Title", "Enter the joke title", String.Empty); var name = new EntryElement("Name", "Enter your name", String.Empty); var desc = new SimpleMultilineEntryElement(String.Empty, String.Empty) { Editable = true }; this.Pushing = true; Root = new RootElement("Submit Joke") { new Section("") { title, }, new Section("") { name }, new Section("Enter your joke below") { desc }, }; this.NavigationItem.SetRightBarButtonItem( new UIBarButtonItem(UIBarButtonSystemItem.Save, (sender, args) => { string jokeTitle = title.Value; string jokeDesc = desc.Value; string AddedBy = name.Value; //validate if (jokeTitle == String.Empty || jokeDesc == String.Empty || AddedBy == String.Empty) { new UIAlertView("Invalid Entry", "All fields are required.", null, "ok", null).Show(); } else { Downloader downloader = new Downloader(); DisplayProgress("Submitting Joke"); Task.Factory.StartNew(() => { Joke newJoke = new Joke(); newJoke.Title = jokeTitle; newJoke.JokeDesc = jokeDesc; newJoke.Tags = jokeTitle; newJoke.AddedBy = AddedBy; success = downloader.AddJoke(newJoke); }).ContinueWith(task3 => { HideProgress(); View.BackgroundColor = UIColor.White; if (success > 0) { new UIAlertView("Joke Submitted", "Thank you! Your joke will be posted after review.", null, "ok", null).Show(); this.NavigationController.PopViewControllerAnimated(true); } else { new UIAlertView("Joke Not Submitted", "Uh oh something went wrong. Please try again.", null, "ok", null).Show(); } }, TaskScheduler.FromCurrentSynchronizationContext()); } }), true); }