【发布时间】:2018-08-03 10:36:48
【问题描述】:
我必须控制 A 和 B。
我从 A 导航到 B 中的 B 按钮单击我已经使用 PresentModalViewController 打开另一个 ViewController,它要求用户输入一些数据。单击该模态呈现视图上的提交按钮时,我想关闭模态并显示在模态呈现视图中捕获的 B 视图上的数据。
这是我所做的:
我有 InviteCollaboratorViewController 从这里我已经模态地呈现了 AddNewCollaboratorDialogPopUpView 并且从那里我再次模态地呈现了另一个名为 AddCollaboratorPopUpView 的视图。
AddCollaboratorPopUpView 用户将填写详细信息并单击 addCollaboratorButton,在此按钮单击事件上,我想关闭两个模态呈现的视图,并希望反映 InviteCollaboratorViewController 表视图中的更改。
InviteCollaboratorViewController
public partial class InviteCollaboratorViewController : UIViewController
{
public override void ViewDidLoad()
{
btnNewDialog.TouchUpInside += BtnNewDialog_TouchUpInside;
MyCollaboratorsTableView.Source = new MyCollaboratorsTableViewSource(this, _listOfMyCollaborators);
MyCollaboratorsTableView.RowHeight = UITableView.AutomaticDimension;
MyCollaboratorsTableView.ReloadData();
}
public override void ViewWillAppear(bool animated)
{
base.ViewWillAppear(animated);
MyCollaboratorsTableView.ReloadData();
}
public void BtnNewDialog_TouchUpInside(object sender, EventArgs e)
{
AddNewCollaboratorDialogPopUpView addNewCollaboratorDialogPop = this.Storyboard.InstantiateViewController("AddNewCollaboratorDialogPopUpView") as AddNewCollaboratorDialogPopUpView;
if (addNewCollaboratorDialogPop != null)
{
addNewCollaboratorDialogPop.ModalPresentationStyle = UIModalPresentationStyle.OverCurrentContext;
addNewCollaboratorDialogPop.ModalTransitionStyle = UIModalTransitionStyle.CrossDissolve;
this.PresentViewController(addNewCollaboratorDialogPop, true, null);
}
}
}
AddNewCollaboratorDialogPopUpView
public partial class AddNewCollaboratorDialogPopUpView : UIViewController
{
public AddNewCollaboratorDialogPopUpView (IntPtr handle) : base (handle) { }
public override void ViewDidLoad()
{
base.ViewDidLoad();
SET_FONTS();
SET_UI_CONTROLS_STYLING();
createNewCollaboratorButton.TouchUpInside += CreateNewCollaboratorButton_TouchUpInside;
}
public void CreateNewCollaboratorButton_TouchUpInside(object sender, EventArgs e)
{
AddCollaboratorPopUpView addCollaboratorPopUp = this.Storyboard.InstantiateViewController("AddCollaboratorPopUpView") as AddCollaboratorPopUpView;
if (addCollaboratorPopUp != null)
{
addCollaboratorPopUp.ModalPresentationStyle = UIModalPresentationStyle.Popover;
addCollaboratorPopUp.ModalTransitionStyle = UIModalTransitionStyle.CrossDissolve;
this.PresentViewController(addCollaboratorPopUp, true, null);
}
}
}
AddCollaboratorPopUpView
public partial class AddCollaboratorPopUpView : UIViewController
{
public AddCollaboratorPopUpView (IntPtr handle) : base (handle) { }
public override void ViewDidLoad()
{
base.ViewDidLoad();
textFieldFirstName.ShouldEndEditing += TextFieldFirstName_ShouldEndEditing;
textFieldLastName.ShouldEndEditing += TextFieldLastName_ShouldEndEditing;
textFieldPhoneNumber.ShouldEndEditing += TextFieldPhoneNumber_ShouldEndEditing;
textFieldEmail.ShouldEndEditing += TextFieldEmail_ShouldEndEditing;
dismissPopupButton.TouchUpInside += DismissPopupButton_TouchUpInside;
addCollaboratorButton.TouchUpInside += AddCollaboratorButton_TouchUpInside;
}
public void DismissPopupButton_TouchUpInside(object sender, EventArgs e)
{
PresentingViewController?.PresentingViewController?.DismissModalViewController(false);
}
public void AddCollaboratorButton_TouchUpInside(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(textFieldFirstName.Text) && !string.IsNullOrEmpty(textFieldLastName.Text)
&& !string.IsNullOrEmpty(textFieldPhoneNumber.Text) && !string.IsNullOrEmpty(textFieldEmail.Text))
{
//Now from here what I want is to call the InviteCollaboratorViewController's ViewWillAppear() because that Refresh's the list of
//users which reflect the added user on list instantly as popup get dismissed.
collaborator.FirstName = textFieldFirstName.Text;
collaborator.LastName = textFieldLastName.Text;
collaborator.Email = textFieldEmail.Text;
collaborator.PhoneNumber = textFieldPhoneNumber.Text;
GlobalConstants.listOfMyCollaborators.Add(collaborator);
PresentingViewController.PresentingViewController.DismissModalViewController(false);
}
else
{
Toast.MakeToast("Please fill all required fields before submitting.").Show();
}
}
}
【问题讨论】:
-
如果你问任何你应该展示你的代码的问题,你尝试了什么
-
@Arvindraja 我试过了!
标签: ios xamarin xamarin.ios