Я хочу открыть новый контроллер просмотра с моего первого вида, который является Table View Controller.Как открыть новый вид из события нажатия кнопки UITableViewRow?
Первый View Controller: 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 (System. String [] args) [0x00008] in /Users/Admin/Projects/TourStops/TourStops/Main.cs:12 Я обновляю свой вопрос с помощью шагов, которые вы мне сказали. Thanks, – Khaksar
Можете ли вы представить рабочий пример, если у вас есть !. – Khaksar