Ich weiß, dass dies bereits gefragt wurde, aber die üblichen Korrekturen (Implementierung der Delegaten- und Datenquellenmethode, entsprechende Einstellung des Delegaten und der Datenquelle usw.) funktionierten nicht. Ich bin hier absolut ratlos.
Obwohl Sie den Delegaten und die Datenquelle festgelegt, die Tabellenansicht auf Bearbeiten eingestellt, die Zelle angewiesen haben, das Nachbestellungssteuerelement anzuzeigen und die erforderlichen Methoden zu implementieren, wird das Nachbestellungssteuerelement nicht angezeigt. Die tableView wechselt in den Bearbeitungsmodus, da ich die Löschsteuerelemente sehen kann. Aber die Nachbestellungssteuerung wird nie angezeigt und ich kann die Zellen nicht neu anordnen.
Ich habe sogar alle meine benutzerdefinierten Zellen geladen und angepasst, falls etwas das Problem verursacht hat. Ich habe einfach keine Ahnung, was falsch läuft. Was seltsam ist, dass tableView:canMoveRowAtIndexPath:
es nicht aufgerufen zu werden scheint, da das Protokoll nie in der Konsole angezeigt wird.
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame style:UITableViewStyleGrouped];
if (self) {
self.delegate = self;
self.dataSource = self;
self.backgroundColor = [UIColor colorWithRed:0.1 green:0.1 blue:0.1 alpha:1.0];
self.separatorInset = UIEdgeInsetsZero;
self.delaysContentTouches = NO;
[self loadImagePicker];
[self registerClass:[ExpandingTitleTableViewCell class] forCellReuseIdentifier:[ExpandingTitleTableViewCell reuseIdentifier]];
[self registerClass:[SliderTableViewCell class] forCellReuseIdentifier:[SliderTableViewCell reuseIdentifier]];
[self registerClass:[UndoRedoTableViewCell class] forCellReuseIdentifier:[UndoRedoTableViewCell reuseIdentifier]];
[self registerClass:[NudgeImageTableViewCell class] forCellReuseIdentifier:[NudgeImageTableViewCell reuseIdentifier]];
self.alwaysBounceVertical = NO;
self.editing = YES;
}
return self;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *reuseIdentifier = nil;
Class cellClass = nil;
//Custom cell class setting code was here
reuseIdentifier = @"Cell";
cellClass = [UITableViewCell class];
//Cell customisation code was here
cell.showsReorderControl = YES;
return cell;
}
- (void)moveRowAtIndexPath:(NSIndexPath *)indexPath toIndexPath:(NSIndexPath *)newIndexPath {
//TBC
}
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"Can move row");
return YES;
}
Ahh, habe es herausgefunden. Ich habe die falsche Methode außer Kraft gesetzt. Ich habe moveRowAtIndexPath:toIndexPath:
nicht überschrieben tableView:moveRowAtIndexPath:toIndexPath:
. Die erste ist vermutlich die Methode, mit UITableView
der die Zeile tatsächlich verschoben wird. Es wurde in der automatischen Vervollständigung angezeigt, da diese tableView ein eigener Delegat und eine eigene Datenquelle ist. Ich habe die richtige Methode implementiert und sie funktioniert jetzt.
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen