2017-06-05 79 views
0

单击表格单元格后,我想使用segue导航到新页面。但是,无论何时单击单元格都不会发生任何事iOS导航到表格单元格上的新视图单击使用Segue

当我在PrepareForSegue方法上放置一个断点时,当我单击DayTableView上的一个单元格时,它不会被点击。

Main.storyboard enter image description here

DayTableViewController

namespace HHGoals2 
{ 
    public partial class DayTableViewController : UITableViewController 
    { 
     HHGoals2DataService dataService = new HHGoals2DataService(); 

     public DayTableViewController(IntPtr handle) : base (handle) 
     { 
     } 

     public override void ViewDidLoad() 
     { 
      var allDays = dataService.GetAllDays(); 
      var dataSource = new GoalsDataSource(allDays, this); 

      TableView.Source = dataSource; 

      this.NavigationItem.Title = "Completed Goals"; 
     } 

     public override void PrepareForSegue (UIStoryboardSegue segue, NSObject sender) 
     { 
      base.PrepareForSegue(segue, sender); 

      if(segue.Identifier == "GoalDetailSegue") 
      { 
       var goalDetailViewController = segue.DestinationViewController 
                as GoalDetailViewController; 
       if(goalDetailViewController != null) 
       { 
        var source = TableView.Source as GoalsDataSource; 
        var rowPath = TableView.IndexPathForSelectedRow; 
        var item = source.GetItem(rowPath.Row); 
        goalDetailViewController.SelectedDay = item; 
       } 

      } 
     } 
    } 
} 

GoalsDataSource

using System; 
using Foundation; 
using UIKit; 
using System.Collections.Generic; 
using HHGoals2.Core.Model; 
using HHGoals2.Cells; 

namespace HHGoals2.DataSources 
{ 
    public class GoalsDataSource: UITableViewSource 
    { 
     private List<Day> allDays; 
     NSString cellIdentifier = new NSString("DayCell"); 
     DayTableViewController callingController; 

     public GoalsDataSource(List<Day> allDays, DayTableViewController callingController) 
     { 
      this.allDays = allDays; 
      this.callingController = callingController; 
     } 

     public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath) 
     { 
      DayListCell cell = tableView.DequeueReusableCell(cellIdentifier) as DayListCell; 

      if (cell == null) 
      { 
       cell = new DayListCell(cellIdentifier); 
      } 


      cell.UpdateCell(allDays[indexPath.Row].Number.ToString(), 
          allDays[indexPath.Row].SuccessRate.ToString(), 
          allDays[indexPath.Row].FailRate.ToString()); 

      return cell; 
     } 

     public override nint RowsInSection(UITableView tableview, nint section) 
     { 
      return allDays.Count; 
     } 

     public Day GetItem(int id) 
     { 
      return allDays[id]; 
     } 

    } 
} 

我是否需要添加DayCell的TouchUpInside事件?任何关于如何使这项工作的建议都会很棒。

+1

尝试检查[他的答案](https://stackoverflow.com/questions/22759167/how-to-make-a-push-segue-when-a-uitableviewcell-is-selected) –

+0

Thx的建议。根据第二个答案,我的工作应该很好。显然它并没有那么茫然。 。 。 。 – RyeGuy

+1

这是你完整的'DayTableViewController'吗?你在哪里设置数据或返回创建的视图'GetView'方法? – apineda

回答

1

我想你错过了将委托和数据源连接到uitableviewcontroller中的tableview。所以连接它,它会正常工作。

+0

我相信你可能是对的。不过,我的印象我已经这样做了。你能提供一个代码示例吗?如果它有效,我一定会给你一个绿色检查 – RyeGuy

+0

self.tableView.delegate = self self.tableView.dataSource = self – sumeet

相关问题