我是Xamarin.iOS的新手。如果我的问题是错的,请原谅我。在我的项目中,我在上传页面上有一个按钮。如果用户单击该按钮,则会转到UITableView页面。然后,用户可以在该表中选择一行。然后,它返回上传页面。我不知道如何从UITableView到上传页面获取所选的表行值。请指导我。到目前为止,这是我的代码:
public override void RowSelected(UITableview view,NSIndexPath index)
{
new AlertView("Selected Row is",""+name[index.Row],null,"Ok",null);
NavigationCOntroller.PopViewController(true);
view.DeselectRow(index,true);
}
答案 0 :(得分:0)
您可以做的是将UITableViewSource中的事件声明为public event EventHandler<NSIndexPath> OnRowSelected
,并将其命名为:
public override void RowSelected(UITableView view, NSIndexPath index) {
if(OnRowSelected != null)
OnRowSelected(sender,index);
}
修改:要从上一页获取值,您可以尝试使用事件传递值。
在包含列表的ViewController中,声明一个事件(例如public event EventHandler<NSIndexPath> OnClose;
),然后从您导航的控制器订阅该事件。如果您的导航是通过故事板进行的,请在PrepareForSegue方法中执行,如下所示:
if(segue.identifier =="YourSegueId"){
YourVc listVC = (YourVc)segue.DestinationViewController;
listVc.OnClose += listVc_OnClose;
}
void listVcOnClose(object sender, NSIndexPath arg){}
现在当您在字段中选择索引的行存储时订阅事件,然后当您调用PopViewController时,将调用ViewWillDisappear,这也是您触发事件的位置:
ViewWillDisappear(bool animated)
{
if(OnClose != null)
OnClose(sender,TableViewSource.MyFieldThatStoresLastSelectedIndex);
}