Kocham MonoTouch do tej pory, ale znajdź dokumentację i próbki brakujące, gdy miniesz kilka lekcji dla początkujących.Zapełnianie prostego UITableView w MonoTouch z UITableViewDataSource - jak używać UITableViewDataSource
Walczę z prostą koncepcją zapełniania prostego UITableView w MonoTouch. Widziałem przykłady robienia tego z komórkami niestandardowymi i obszernym dostosowywaniem listy przy użyciu różnych informacji, ale szukam jedynie minimum, jak osiągnąć tę prostą rzecz. Jestem profesjonalnym programistą .NET i bardzo nowością w systemie iOS, więc wciąż pakuję się w głowę, jak to działa.
Po prostu chcę następujące. Tworzenie listy pozycji Przypisz listę elementów do UITableView, aby umożliwić użytkownikowi przewijanie listy. Szukam bardzo prostego przykładu.
Największa rzecz, z którą walczę, to utworzenie obiektu UITableViewDataSource. Jest abstrakcyjny, więc nie mogę utworzyć jego przykładu. Mógłbym stworzyć własną klasę, która ją dziedziczy, ale szukam konkretnej implementacji w ramach, której można użyć bez konieczności tworzenia własnego. Czy jestem zbyt zepsuty przez .NET i muszę stworzyć dla niego nową klasę, czy też istnieje ona gdzieś w Ramach i po prostu nie mogę jej znaleźć?
[Odpowiedź tutaj] znalazłem odpowiedź, ale StackOverflow nie pozwoli mi odpowiedzieć na moje własne pytanie z mniej niż 100 reputacji lub chyba czekać 8 godzin których nie jestem w stanie zrobić. Odpowiedz poniżej:
Utworzono następującą klasę, która dziedziczy UITableViewSource. Jest to wymóg, aby zrobić to w ten sposób. GetCell kontroluje sposób renderowania komórki na stole.
Utwórz wystąpienie tego i podaj listę ciągów do wypełnienia.
Ten przykład pochodzi z (I zmodyfikowane go nieznacznie) książkę czytam z Wrox Press - „Profesjonalne iPhone Programowanie z MonoTouch i .NET C#”
public class TableViewSource : UITableViewSource
{
private List<string> rows;
public TableViewSource (List<string> list)
{
rows = list;
}
public override int RowsInSection (UITableView tableview, int section)
{
return rows.Count;
}
public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
{
UITableViewCell cell = new UITableViewCell(UITableViewCellStyle.Default,"mycell");
cell.TextLabel.Text = rows[indexPath.Row];
return cell;
}
}
Umieść następujący kod w viewDidLoad na ekranie .
var list = new List<String>()
{
"San Francisco",
"Buenos Aires",
"São Paulo"
};
TableViewSource tableData = new TableViewSource(list);
this.tblTrips.Source = tableData;
To daje mi to czego szukam, bez konieczności głębokiego nurkowania w MonoTouch.Dialog
Doceniam poradę i potencjalnie zajrzę w to w przyszłości.Ale, szczerze mówiąc, szukałem sposobu użycia istniejących obiektów w mono i znalazłem przykład, który pozwolił mi to zrobić w książce, którą czytam. Zobacz moją odpowiedź poniżej. Teraz, gdy rozumiem, jak to działa i jak używać GetCell do renderowania komórki i że jest wymagane, aby stworzyć moją własną implementację UITableViewSource, myślę, że jestem na dobrej drodze, aby to zrozumieć. – user1060500
MT.Dialog to świetne narzędzie, ale zgadzam się, że naprawdę trzeba zrozumieć, jak natywnie korzystać z TableViews - są one bardzo istotną częścią interfejsu iOS. Jestem zaskoczony, że Xamarin nie ma dobrej próbki tego w swojej bibliotece dokumentów. – Jason
Ponieważ nie mogę odpowiedzieć na moje własne pytanie z mniej niż 100 reputacją, to pytanie pozostanie bez odpowiedzi. Szkoda, bo moja odpowiedź naprawdę pomogłaby społeczności. Zapomnę o tym odpowiedzieć za 8 godzin, kiedy będę mógł to zrobić zgodnie z zasadami StackOverflow. [Zdecydowanie nie zgadzam się z tą zasadą] - Postawię odpowiedź jako część pytania do obejścia tego ... – user1060500