![]() |
iCL UITableView stylen
Hallo,
kann mir jemand erklären, wie ich das verdammte UITableView style? Hab hier zwar ein ![]() Den Teil, wie ich Controls mit Core Graphics selber zeichne, hab ich problemlos hinbekommen! Hier verstehe ich die Vorgehensweise bzw. welche Events ich benutzen muss nicht. Viele Grüße Croco |
AW: UITableView stylen
Geht es um XCode oder Delphi? Und falls Letzteres, mit welchen Komponenten oder programmierst Du einen eigenen Viewcontroller?
|
AW: UITableView stylen
Ups, ganz vergessen: Es geht um die nativen Controls von TMS.
|
AW: iCL UITableView stylen
Und wieso schaust Du Dir dann ein Xcode-Tutorial an? Versuch doch mal den TMS-Code zu verstehen und das zu ergänzen.
|
AW: iCL UITableView stylen
Ich verstehe das Zeug so einigermaßen, nur hier habe ich ein Problem:
Code:
Genauer gesagt hier:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{ static NSString * CellIdentifier = @"Cell"; UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; NSString * entry; // START NEW if (![cell.backgroundView isKindOfClass:[CustomCellBackground class]]) { cell.backgroundView = [[CustomCellBackground alloc] init]; } if (![cell.selectedBackgroundView isKindOfClass:[CustomCellBackground class]]) { cell.selectedBackgroundView = [[CustomCellBackground alloc] init]; } // END NEW if (indexPath.section == 0) { entry = self.thingsToLearn[indexPath.row]; } else { entry = self.thingsLearned[indexPath.row]; } cell.textLabel.text = entry; cell.textLabel.backgroundColor = [UIColor clearColor]; // NEW return cell; }
Code:
Hier wird abgefragt, ob die Art der Spalte dem CustomCellBackground entspricht. Nur wo kommt das CustomCellBackground her?
if (![cell.backgroundView isKindOfClass:[CustomCellBackground class]]) {
cell.backgroundView = [[CustomCellBackground alloc] init]; } if (![cell.selectedBackgroundView isKindOfClass:[CustomCellBackground class]]) { cell.selectedBackgroundView = [[CustomCellBackground alloc] init]; } |
AW: iCL UITableView stylen
Das ist eine von Dir zu erstellende UIVIew-Klasse. Dort realisierst Du dann Events wie drawRect etc. Die Klasse steht bei XCode in "CustomCellBackground.h", deshalb
Code:
#import "CustomCellBackground.h"
|
AW: iCL UITableView stylen
Achso, und dieses View ist dann später die Zeile? Ahaaa....
Ah noch eine Frage: In welchem Event kommt der Abschnitt von oben? |
AW: iCL UITableView stylen
Steht doch da
Code:
. Das gibt eine Zelle zurück, so ein bischen wie ein StringGird.Cells. Nur dass es eben NSIndexPath.section und NSIndexPath.Row heißt. Und der kann noch weiter verschachtelt werden, wie ein Baum.
cellForRowAtIndexPath
|
AW: iCL UITableView stylen
Meine Frage war eher, welches Event ich beim TableView aus der iCL benutzen soll. Ein Event mit dem (oder ähnlichen) Namen "cellForRowAtIndexPath" kann ich nicht finden :gruebel:
|
AW: iCL UITableView stylen
Ich kenne die iCL nicht. Aber TMS muss ja den UIView irgendwie umgesetzt haben. Musst Du in deren Code suchen. Auch wenn es vielleicht nicht als published property in einen im OI sichtbaren Notify-Event umgesetzt wurde.
|
AW: iCL UITableView stylen
mhm, also ein Event kann ich nicht finden. Nur folgende Funktion in der Klasse TUITableViewDataSource:
Delphi-Quellcode:
Den Rest habe ich jetzt einfach mal so übersetzt:
function tableView(tableView: UITableView; cellForRowAtIndexPath: NSIndexPath): UITableViewCell; overload; cdecl;
Delphi-Quellcode:
Funktioniert aber nicht :D
procedure TForm1.TableView1GetItemStyle(Sender: TObject; ASection,
ARow: Integer; var AStyle: TTMSFMXNativeUITableViewItemStyle); var Cell: ^UITableViewCell; CellIdentifier: NSString; path: NSIndexPath; begin CellIdentifier:= TNSString.Wrap(TNSString.Alloc.initWithUTF8String('Cell')); Cell:= TableView1.TableView.dequeueReusableCellWithIdentifier(CellIdentifier); Path:= TableView1.TableView.indexPathForCell(Cell^); if not Cell.backgroundView.isKindOfClass(CustomCell) then Cell.setBackgroundView(CustomCell.View); if not Cell.selectedBackgroundView.isKindOfClass(CustomCell) then Cell.setSelectedBackgroundView(CustomCell.View); Cell.textLabel.setBackgroundColor(TUIColor.Wrap(TUIColor.OCClass.clearColor)); end; |
AW: iCL UITableView stylen
Und wo bindest Du das an Deinen Event?
|
AW: iCL UITableView stylen
Das ist das Problem. Im Moment schreibe ich das ganze in das völlig falsche Event TableView1GetItemStyle. Wie ich das richtige Event ins Leben rufe, weiß ich nicht :-/ .
|
AW: iCL UITableView stylen
Eben. Du musst Dir anschauen wie die Delegates vom UIView in Delphi Events kommen. Und das dann für diesen Event genauso machen. Alternativ bei TMS fragen wie man das macht oder ob sie Deinen Wunsch kurzfristig implementieren.
|
AW: iCL UITableView stylen
Also: Auf die Frage, wie man das TableView stylen kann, hat mir TMS folgenden Hinweis gegeben:
Delphi-Quellcode:
Das Event sei nicht published, da die Parameter nicht mit Win32 kompatibel wären, so der Support.
procedure TForm1.DoItemCustomizeCell(Sender: TObject; ACell:
UITableViewCell; AItemStyle: TTMSFMXNativeUITableViewItemStyle; ASection, ARow: Integer); begin end; procedure TForm1.FormCreate(Sender: TObject); begin TMSFMXNativeUITableView1.OnItemCustomizeCell := DoItemCustomizeCell; end; Auf TMS kann man sich eben verlassen! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz