Ich habe eine MonoTouch iPhone App mit einem UITableViewController
als Hauptansicht-Controller.
Ich versuche zu erkennen, wenn die Tabellenansicht mit dem Code gescrollt wird:
%Vor% wobei TableViewScrolled(object sender, EventArgs e) { }
meine Methode ist, die aufgerufen wird.
Aber es kann das TableViewScrolled()
aus irgendeinem Grund nicht aufrufen.
Hat jemand damit Erfahrung?
@ Krumelurs Kommentar zu der vorherigen Antwort ist ein sehr guter Punkt und die IMO hätte eine Antwort sein sollen (kein Kommentar).
Der Punkt ist, dass, wenn Sie Delegate
(oder WeakDelegate
) auf Ihre UITableView
setzen, die Ereignisse nicht mehr funktionieren.
Warum? Um diese Ereignisse zu implementieren, erstellt MonoTouch einen eigenen internen Delegattyp für UIScrollView
(das übergeordnete Element von UITableView
), wobei er die Methoden (des Delegaten) überschreibt und sie als verfügbar macht , mehr natürlich (in .NET), Ereignisse innerhalb des Typs.
Dies bedeutet effektiv, dass Sie diese UITableView
-Ereignisse nicht mit Ihrem eigenen Delegaten UITableViewDelegate
type mischen können (da der letztere den vorherigen überschreibt).
Meine Antwort ist nicht wirklich nur das Scrollen , sondern aufgrund der Tatsache, dass ich eine ganze Stunde damit verbracht habe mit einem Problem zu kämpfen, das durch das Scrollen verursacht wurde, Ich habe mich entschieden, hier eine Antwort zu schreiben.
Also, das Problem für mich war, dass nach dem Abonnieren:
%Vor%meine überschriebenen Methoden der geerbten Klasse UITableViewDataSource:
%Vor%funktioniert nicht mehr (wurde nicht aufgerufen) . Was war ... offensichtlich, ziemlich unerwartet!
Also, ich musste überschreiben
%Vor%im selben Datenquellen-Delegaten anstatt das für ein vorhandenes Ereignis in der Tabellenansicht zu abonnieren.
Ich hoffe, jemand wird nicht in solche Schwierigkeiten geraten!
Lesen Sie diese Dokumentation: UIScrollViewDelegate
Sie können Folgendes verwenden:
%Vor%oder
%Vor%Viel Glück, Nathan
Tags und Links c# objective-c iphone uitableview xamarin.ios