Ұяшықтарды шығарудан шығаруды қалай тоқтату керек - shouldIndentWhileEditingRowAtIndexPath ешқандай әсерге ие емес

Менің қарапайым (топтастырылмаған) tableView кестесі бар, және мен Өңдеу түймешігін басқанда, ұяшықтар шегінеді. Мен мұны қажет етпеймін, ұяшықтың оң жағында орналасқан жою белгісін алғым келеді.

Мен mustIndentWhileEditingRowAtIndexPath және cell.shouldIndentWhileEditin = NO деп көргім келді; сонымен қатар cell.indentionLevel = -3, бірақ екеуі ешқандай әсер етпейді. Кез келген идея неге?

Бұл менің баптауыммен байланысты болуы мүмкін бе? Мен бұл оқулық бойынша жүрдім және мен Davyd ұсынды , бірақ соңғы менің ұяшықтарды ғана шығарып қана қойған жоқ, бұл тіпті одан да жаман мен жасалды, мен бүкіл ұяшықты жабу үшін фондық суретті ала алмаймын ...

Мәселен, кез-келген адам жасанды ұяшықтарды кәдімгі кесте көрінісінде тоқтатуды қалай біледі, алайда белгісін жою және ауыстыруды көрсете ме?

// EDIT: btw, IB ішіндегі реттелетін ұяшықты саламын. Мен «Өңдеу кезінде шегіну» деп аталатын құсбелгіні алып тастай аламын, ол туралы қамқорлық жасамайды. Маңызды бағалау деңгейіне және еніне өзгертуге болады, ешқандай нәтиже жоқ. Егер редакторлық аксессуарды өзгертсем, ол оны бақытты көрсетеді. Бұл көмектеседі деп үміттенемін ..

Рахмет!

2

7 жауаптар

Көптеген зерттеулерден кейін және пиксель арқылы пиксельді сынап көргеннен кейін, бастапқы кодтан түпнұсқадан «транзитке» өту үшін - (void) layoutSubviews бұл менің коды, менің CustomCell.m орналастырылған:

- (void)willTransitionToState:(UITableViewCellStateMask)aState
{
[super willTransitionToState:aState];
self.state = aState;
}


- (void)layoutSubviews
{
[super layoutSubviews];
// no indent in edit mode
self.contentView.frame = CGRectMake(0,                                          
                                    self.contentView.frame.origin.y,
                                    self.contentView.frame.size.width, 
                                    self.contentView.frame.size.height);

if (self.editing )        
{
    NSLog(@"subview");
    float indentPoints = self.indentationLevel * self.indentationWidth;

    switch (state) {
        case 3:
            self.contentView.frame = CGRectMake(indentPoints,
                                                self.contentView.frame.origin.y,
                                                self.contentView.frame.size.width +124,// - indentPoints, 
                                                self.contentView.frame.size.height);   

            break;
        case 2:
           //swipe action
            self.contentView.frame = CGRectMake(indentPoints,
                                                self.contentView.frame.origin.y,
                                                self.contentView.frame.size.width +75,// - indentPoints, 
                                                self.contentView.frame.size.height);   

            break;
        default:
           //state == 1, hit edit button
            self.contentView.frame = CGRectMake(indentPoints,
                                                self.contentView.frame.origin.y,
                                                self.contentView.frame.size.width +80,// - indentPoints, 
                                                self.contentView.frame.size.height);  
            break;
        }
    }
}

Бұл көмектеседі деп үміттенемін :)

5
қосылды

Жоғарыда аталған жұмыстардың ешқайсысы мен үшін емес, бірақ бұл:

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return UITableViewCellEditingStyleNone;
}

Осылайша, UITableView-ге айтатын болсаңыз, өңдеу режимінде кез-келген сән үлгісін қаламаңыз және орнына өзіңіз туралы қамқорлық жасай аласыз.

3
қосылды
бұл дұрыс
қосылды автор Dima Deplov, көзі
бұл мен үшін де жұмыс істейтін жалғыз нәрсе
қосылды автор stackOverFlew, көзі

Ұяшықты өңдеу кезінде делегат әдісі tableView: mustIndentWhileEditingRowAtIndexPath: шақырылғанын тексердіңіз бе?

Мен тек tableView: пайдаланатын IEndentWhileEditingRowAtIndexPath: өкілдік әдісін пайдаланған кезімде ол жақсы жұмыс істеді.

// Override to prevent indentation of cells in editing mode (in theory)
- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath {
    return NO;
}
2
қосылды
Мен mustIndentWhileEditingRowAtIndexPath делегат әдісін iOS 6-да қарапайым кесте көрінісімен көргім келді және ол жұмыс істейді!
қосылды автор Joseph Lin, көзі
shouldIndentWhileEditing шақырылады, бірақ бұл тек топтастырылған кесте үшін жұмыс істейдіViews, mine анық және болуы керек: /
қосылды автор Nareille, көзі
100% іздегенім, рахмет сэр
қосылды автор anders, көзі

Мазмұн көрінісінің немесе ұяшықтағы элементтердің автоматты түрде жасайтын маскасын өзгертуге тырысыңыз. Шегініс, себебі сіздің ұяшық өңдеу режиміне кіргенде, мазмұн көрінісі мөлшерін өзгертеді, ол аксессуарларды көрсетеді және мазмұн онымен жылжиды.

Ұяшығыңыздағы нәрсені білместен нақты кеңес беру қиын, бірақ сол немесе оң жақ шетіне қарап отырғыңыз келеді.

1
қосылды
Менің ұяшықымда батырманың және екі жапсырма бар, бірақ мен сонымен қатар cell.contentView.backgroundColor-ге кескін орнатып қойдым. Мен ХБ инспекторының инспекторларында түрлі және қызыл сызықтардың әртүрлі комбинацияларын қолдануға тырыстым, бірақ қазірдің өзінде ешқандай әсер ете алмады. Мен дұрыс комбинациясын сағындым ба? Рақмет сізге.
қосылды автор Nareille, көзі
Сурет, түймелер, сондай-ақ жапсырмалар шегініс жасайды. Мен айтқанымдай, қызыл сызықтарды ауыстыру ешқандай нәтиже бермейді: (Мен CustomCell-ға, сондай-ақ батырмаға немесе этикеткаларға тырысып көрдім.Қазіргі ұяшықтың оң жаққа шегініп, оң жаққа , қозғалыс белгісін көрсету үшін.
қосылды автор Nareille, көзі
Бұл жұмыс істемейтін фон суреті немесе жапсырмалар мен түймелер де бар ма? Менде қарама-қарсы мәселе болды, менің тапсырысымның орналасуы болды, мен оны шыңырауды қалағым келді, бірақ бұл мен емес, мен оны автоматты түрде сұрыптайды.
қосылды автор jrturton, көзі

Мұны тек iOS 6-да көрдім.

shouldIndentWhileEditingRowAtIndexPath өкілі әдісі енді қарапайым кесте көрінісінде де жұмыс істейді.

----- өңделді -----

Well, as it turned out, it doesn't indent only if allowsMultipleSelection = YES

0
қосылды
iOS 8 жүйесінде бір рет таңдау арқылы жұмыс істемейді
қосылды автор Dima Deplov, көзі

Менде бірдей мәселе болды. Мұның себебі: олар шегінбейді, бірақ автоматты түрде өзгертіледі. Жою түймесі ұяшықтың көрінісі (және оның субвiews) өлшемін өзгертеді.

Шешім: Пайдаланушы кестесінің жасырын сұхбаттарының автобайлық әрекетін орнатыңыз (жапсырмаларды немесе оған орналастырғаныңыздың бәрін) Интерфейс/Xcode-де қажет болғанда.

0
қосылды

Мен UIView-ті backgroundView розеткасына қосатын болсаңыз, бұл ешқашан қозғалмайды . Бұл автоматты түрде жасалатын жалаулармен біріктірілген, шын мәнінде, сізге қажет.

0
қосылды