当前位置: 首页 > 编程语言 > C#

使用Monotouch处理iOSUITableViewSource事件分享

时间:2023-04-11 00:21:55 C#

使用Monotouch处理iOSUITableViewSource事件我试图在单击UITableViewSource的元素时捕获和处理事件。这是我的代码:publicclassTableViewSource:UITableViewSource{publiceventEventHandlerSongSelected;私有列表行;公共TableViewSource(列表列表){行=列表;}publicoverrideintRowsInSection(UITableViewtableview,intsection){returnrows.Count;}publicoverridevoidRowSelected(UITableViewtableView,NSIndexPathindexPath){//引发我们的事件varhandler=SongSelected;if(handler!=null)handler(this,newSongSelectedEventArgs(rows[indexPath.Row]));}publicoverrideUITableViewCellGetCell(UITableViewtableView,NSIndexPathindexPath){UITableViewCellcell=newUITableViewCell(UITableViewCellStyle.Default,"mycell");cell.TextLabel.Text=rows[indexPath.Row].ToString();返回单元格;}publicclassSongSelectedEventArgs:EventArgs{publicSongGroup{get;放;}publicSongSelectedEventArgs(Songgroup):base(){Group=group;我是从Xamarin的一个演示片段构建模型的,这里:protectedclassAssetGroupTableSource:UITableViewSource{公共事件EventHandlerGroupSelected;受保护的列表组;publicAssetGroupTableSource(Listgroups){this.groups=groups;}publicoverrideintNumberOfSections(UITableViewtableView){return1;}publicoverrideintRowsInSection(UITableViewtableview,intsection){returngroups.Count;}publicoverrideUITableViewCellGetCell(UITableViewtableView,NSIndexPathindexPath){UITableViewCellcell=tableView.DequeueReusableCell("AlbumCell");if(cell==null)cell=newUITableViewCell(UITableViewCellStyle.Default,"AlbumCell");cell.TextLabel.Text=groups[indexPath.Row].Name;返回单元格;}publicoverridevoidRowSelected(UITableViewtableView,NSIndexPathindexPath){//引发我们的事件varhandler=GroupSelected;if(handler!=null)handler(this,newGroupSelectedEventArgs(groups[indexPath.Row]));}publicclassGroupSelectedEventArgs:EventArgs{publicALAssetsGroupGroup{get;放;}公共GroupSelectedEventArgs(ALAssetsGroup组):base(){组=组;当我在表视图中单击(类Song)元素时,它成功地覆盖了RowSelected但是,处理程序始终为null。我的做法与导致此失败的示例代码有何不同?编辑:这是应该读取(但不触发)事件的行:TableViewSourcetableData=newTableViewSource(results);tableData.SongSelected+=(objectsender,TableViewSource.SongSelectedEventArgse)=>{//AssetEnumerationScreenassetScreen=newAssetEnumerationScreen(e.Group.Name,assetGroups[e.Group]);//NavigationController.PushViewController(assetScreen,true);Console.WriteLine("测试");};编辑:这是大部分主要代码:TableViewSourcetableData=newTableViewSource(results);tableData.SongSelected+=(objectsender,TableViewSource.SongSelectedEventArgse)=>{Console.WriteLine("Test");};tableData.SongSelected+=delegate(objectsender,TableViewSource.SongSelectedEventArgse){控制台。WriteLine("测试");LyricsScreenassetScreen=newLyricsScreen(e.Song);NavigationController.PushViewController(assetScreen,true);};searchBool.ValueChanged+=(sender,e)=>{UpdateDisplay(tableData,songList);;lyricSearch.TextChanged+=(sender,e)=>{UpdateDisplay(tableData,songList);};lyricSearch.Text=String.Empty;this.searchResults.Source=tableData;编辑!:我发现了这一行的错误:tableData=newTableViewSource(results);两次,所以它订阅了第一个事件,但后来我创建了一个新的并将其设置为源,覆盖订阅的一个。谢谢!以上就是C#学习教程:使用Monotouch处理iOSUITableViewSource事件的全部内容分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: