Wenn eine Zelle in einem UITableView zu einer Unteransicht führt, kann es nützlich sein, einen zusätzlichen visuellen Kontext zu haben. Ein Offenlegungsindikator in einem UITableViewCell ist ein kleiner Chevron, der am rechten Rand angezeigt wird, um visuell anzuzeigen, dass er irgendwo führt. Nehmen wir zum Beispiel einen Blick auf die 8220History8221 Ordner in den Mobile Safari Bookmarks: Nifty, rechts Here8217s, wie es geht: 8211 (UITableViewCell) tableview: (UITableView) Tableview cellForRowAtIndexPath: (NSIndexPath) indexPath statische NSString CellIdentifier quotCellquot UITableViewCell Zelle Tableview dequeueReusableCellWithIdentifier: CellIdentifier if (Zelle nil) Zelle UITableViewCell alloc initWithStyle: UITableViewCellStyleDefault reuseIdentifier: CellIdentifier Autorelease beachten sie, dass eine Offenlegung Indikator ist nur für visuellen Kontext es doesn8217t wirklich etwas tun. Sie müssen noch die Subview, Sie mit dem kleinen kreisförmigen Berührungsfläche jeder worden display. Have wollen implementieren frustriert, wenn das Zubehörtyp einer UITableViewCell Einstellung UITableViewCellAccessoryDisclosureIndicator zu sein, wenn Sie Kind Finger haben, it8217s sehr schwierig, konsequent zu wählen. Here8217s eine Möglichkeit, die Benutzerfreundlichkeit zu verbessern und die gleiche Wirkung eines größeren Touch-Pad, wie Sie auf der YouTube-Anwendung zu sehen. Dazu müssen Sie eine benutzerdefinierte Tabellenansichtszelle implementieren. Sie können entweder eine eigene Unterklasse erstellen oder Subviews zum cell8217s contextView hinzufügen. Dieses Beispiel zeigt, wie die letzteren zu tun. Beim Einrichten meiner UITableViewCells Ich mag Methoden, die die Elemente, die ich verwenden möchten, um die cell8217s contentView hinzufügen zu schaffen. Hier bin ich die Schaffung eines UIButton von Typ UIButtonTypeDetailDisclosure zu jeder Zelle in der Tabelle hinzugefügt werden. Die Schaltfläche verfügt über einen Bereich von 44 x 44 Pixeln und belegt den rechten Bereich der Tabellenansichtszelle, der 320 Pixel breit und 44 Pixel hoch ist. Beachten Sie, dass Sie ein Ziel und eine Aktion Ihrer eigenen definieren und nicht die Rückrufe für den im UITableViewDelegate-Protokoll definierten Zubehörtyp verwenden. Im folgenden wird gezeigt, wie Sie die Schaltfläche zu der Zelle in der cellForRowAtIndexPath-Methode in der Tabellenansicht-Controller-Klasse hinzufügen. Beim Hinzufügen von Unterviews zum contentView müssen Sie darauf achten, dass Ihr Detailinformationsindikator oben angezeigt wird. Stellen Sie außerdem sicher, dass Sie die Wiederverwendung Ihrer Zellen ordnungsgemäß behandeln. Um das Selektionsereignis zu bearbeiten, benötigen Sie den folgenden Code: 7 Responses to 8220Larger Touch Area für Detail Disclosure Indicator8221 Vielen Dank für den Code. I8217m mit einigen Schwierigkeiten, wenn die Schaltfläche tatsächlich eingereicht wird. I8217m Hinzufügen der Schaltflächenansicht nach I8217ve subclassed eine UITableViewCell mit mehreren Etiketten. Die Schaltfläche wird angezeigt, aber I8217m nicht in der Lage, den IndexPath für die ausgewählte Zelle zurückzugeben. I8217m mit dem SeismicXML Beispiel, um meine UITableView zu bauen. Der Code innerhalb des 8211 (void) DetailDiscolosureIndicatorSelected: (UIButton) Absender doesn8217t erlauben mir, irgendwelche der Daten zu ziehen, die mit meiner Zelle verbunden sind. Irgendwelche Vorschläge I8217m wirklich in der Notwendigkeit des Erhaltens eines UIButton, das einem UITableViewCell hinzugefügt wird, um auf seine eigenen Tätigkeiten zu reagieren. Vielen Dank für die Anfrage Ein Weg zu gehen ist, speichern Sie die Zeilennummer im Tag-Attribut der Schaltfläche beim Bau der Zelle. So haben Sie diese Daten im Absenderobjekt. Dieser Ansatz wird weniger nützlich (oder komplizierter), wenn Ihre Tabellenansicht mehr als einen Abschnitt besitzt. I8217m sicher gibt es elegantere Ansätze. Mit dem Code unten sollte auch funktionieren, aber Experimentieren an diesem Morgen zeigte mir, es liefert nicht die richtigen Daten mindestens für meine Umsetzung. NSIndexPath indexPath tableView indexPathForSelectedRow Halten Sie mich auf, wie es geht Dank für diesen Tipp. Ich habe die Tag-Eigenschaft der Schaltfläche, um den Zell-Index zu speichern, wenn ich die Schaltfläche erstellt und ich war in der Lage, es zu verwenden, um eine Aktion basierend auf der button8217s Zelle auslösen, obwohl die Schaltfläche nicht an die Zelle gebunden ist. Haben Sie den Accessory-Beispielcode auf dem SDK gesehen. Der IndexPath wird durch den Berührungspunkt an der Ansicht erhalten. CGPoint currentTouchPosition berühren locationInView: self. tableView NSIndexPath indexPath self. tableView indexPathForRowAtPoint: currentTouchPosition I8217m versuchen, die Tag-Eigenschaft zu verwenden, wie you8217ve oben erwähnt, aber can8217t es die Arbeit zu. Würde es Ihnen etwas dagegen, den Code, wie dies zu tun Nach dem Setzen der button8217s tag Wert, wenn ich die Schaltfläche erstellen, I8217ve versucht mit sender. tag, um den Wert abzurufen, wenn die Taste gedrückt wird, aber mein Code won8217t kompilieren. Ich bekomme nur eine 8216request für Member nicht eine Struktur oder union8217 Fehler. Irgendein Beispielcode würde geschätzt. Um Gary First typecast der Absender auf die Schaltfläche UIButton-Taste (UIButton) Absender int tagbutton. tag albertofloyd, ich danke Ihnen sehr für Ihre Erwähnung Zubehör-Beispiel. Es löst genau alle Probleme im Zusammenhang mit indexpath und UIButton Aktionen. Leave a ReplyChanging die Farbe eines Disclosure Indicator In einigen iOS apps, kann ein Designer / Entwickler möglicherweise die Farbe eines Table View Cell Zubehör, wie ein Checkmark oder Disclosure Indicator ändern. Das Ändern der Farbe eines Häkchen ist einfach. Von Stackoverflow / Fragen / 26045738 / swift-uitableviewcellaccessorytype-change-Häkchen-Farbe, die Farbe eines Checkmark Wechsel erfolgt durch: Allerdings wird diese Technik für eine. DisclosureIndicator nicht funktionieren. Warum ich das nicht weiß. Andere haben eine Arbeit vorgeschlagen, die ein Bild des Disclosure Indicators verwendet. Der Swift-Code für diese, auch innerhalb von tableView: CellForRowAtIndexPath ist: Hierzu können Sie einen Chevron oder einen Pfeil aus dem Web herunterladen. Ich habe einen Chevron in iDraw und dann exportiert sie direkt in Images. xcassets von meinem Xcode-Projekt. Medium / ronm333 / Verbesserung der Bild-Work-Flow-the-iDraw-to-Xcode-connection-b2da9f8b47a Um einen Sparren in iDraw ziehen: Deaktivieren Sie die Fill auf schwarz Draw kleinen rectanges Set Stroke und positionieren Sie sie wie folgt: Wählen Sie Beide Rechtecke, und das Menü Ändern gt Union Wählen Ändern gt Drehen und Transformieren gt Transformieren Mit einem Chevron in iDraw können Sie ganz einfach ändern Sie ihre Farbe und Skala, wenn nötig. Um dies in einer einfachen Tabellenansicht zu sehen, können Sie ein Xcode-Projekt herunterladen: github / ron333 / A-Simple-Table-View-Beispiel Die Chevron-Form ist in images. xcassets verfügbar.
No comments:
Post a Comment