0
我想从我的第一个视图即表视图控制器打开新的视图控制器。如何从UITableViewRow按钮点击事件打开新视图?
第一个视图控制器:控制器的TableView与行。 第二视图控制器:第一个表视图控制器上选定行的TableView控制器,详细视图控制器。
using System;
using System.Collections.Generic;
using System.Text;
using Foundation;
using UIKit;
namespace TourStops.iOS {
class TourStopsTableSource : UITableViewSource {
private List<TourLib.TourStop> _stops;
NSString _cellID = new NSString("TableCell");
FirstViewController _fvc;
public TourStopsTableSource(FirstViewController fvc) {
_stops = TourLib.TourSource.GetAllTourStops();
_fvc = fvc;
}
public override nint RowsInSection(UITableView tableview, nint section)
{
// tell the TableView how many rows to create
return _stops.Count;
}
public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath) {
TourLib.TourStop currentTourStop = _stops[indexPath.Row];
var cell = tableView.DequeueReusableCell(_cellID) as TourStopTableCell;
if (cell == null) { cell = new TourStopTableCell(_cellID); }
cell.UpdateCellControlsWithTourData(currentTourStop.Name, currentTourStop.Phone);
#region SetupMapButton
string mapUrl = String.Format("http://maps.google.com/maps?q={0}+{1}",
currentTourStop.Latitude,
currentTourStop.Longitude);
cell.MapButton.TouchUpInside += delegate (object sender, EventArgs e)
{
UIApplication.SharedApplication.OpenUrl(new NSUrl(mapUrl));
};
#endregion
cell.CallButton.TouchUpInside += OpenDetailView;
return cell;
}
private void OpenDetailView(object sender, EventArgs e) {
var view = new SecondDetailController();
_parent.NavigationController.PushViewController(view, true);
}
}
}
我FirstViewController类:
using Foundation;
using System;
using UIKit;
namespace TourStops.iOS
{
public partial class FirstViewController : UIViewController
{
public FirstViewController (IntPtr handle) : base (handle)
{
}
public FirstViewController()
{
}
public override void ViewDidLoad()
{
base.ViewDidLoad();
TourStopsTable.Source = new TourStopsTableSource(new FirstViewController());
}
}
}
感谢您的帮助。 – Khaksar
但这并没有为我工作。 我做到了,你说的方法相同,但它给了异常,异常的详细信息如下: System.NullReferenceException:在Navigation.Application.Main(系统未将对象引用设置到对象 的一个实例。 String []参数)[0x00008]在/Users/Admin/Projects/TourStops/TourStops/Main.cs: 我更新我的问题,你告诉我的步骤。 谢谢, – Khaksar
如果您有任何问题,请您提供一个可用的示例! – Khaksar