Hücreleri girintiden nasıl durduracağınız - shouldIndentWhileEditingRowAtIndexPath efekti yoktur

Özel hücreler ile sade (gruplandırılmamış) bir tablomuz var ve Edit düğmesine bastığımda hücreler girintiye giriyor. Bunu istemiyorum, silme işaretinin cep telefonumun üstüne uzanmasını istiyorum.

Ihtiyacım olan herşeyi denedimHayırEditingRowAtIndexPath ve ayrıca cell.shouldIndentWhileEditin = NO; cell.indentionLevel = -3 yanı sıra her ikisi de bir etkisi olmaz. Bir fikrin neden?

Bu benim kurulumumdan kaynaklanabilir mi? bu eğiticiyi izledim ve ayrıca Davyd burayı önerdi , ancak sonuncusu yine de hücrelerimi yine de indekslemedi, daha da kötü hale getirdi. Bitti düğmesine bastığımda içeri girmiştim ve arka plan görüntüsünü tüm hücreyi kapatamıyorum ...

Öyleyse, herkes silme ve taşıma işaretini göstermeye çalışırken, özel bir tabloyu özel bir tablo görünümünde nasıl durduracağını bilir?

//DÜZENLE: btw, IB'deki özel hücreyi yapıyorum. "Düzenlerken Girinti" yazan onay işaretini alabilirim, umursamıyor. Dolaşma seviyesi ve genişlik değerlerini değiştirebilirim, etki yok. Düzenleme aksesuarını değiştirirsem, bunu mutlu bir şekilde gösterir. Umarım yardımcı olur..

Teşekkürler!

2

7 cevap

Çok fazla araştırma yaptıktan ve piksele göre piksel denedikten sonra, orijinal durumdan orijinal boyutuna geçiş yapmak için - (void) layoutSubviews 'ı kullanmam gerekiyordu. Bunu yapmak için, İşte benim CustomCell.m yerleştirilen kodum:

- (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;
        }
    }
}

Umarım yardımcı olur :)

5
katma

Yukarıdakilerin hiçbiri benim için işe yaramadı, ama bu yaptı:

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

Bu sayede UITableView'e, düzenleme modundayken herhangi bir yerel stil istemediğinizi söylüyorsunuz ve bunun yerine kendiniz halledebilirsiniz.

3
katma
bu doğru olan
katma yazar Dima Deplov, kaynak
benim için de çalışan tek şey bu
katma yazar stackOverFlew, kaynak

Hücreyi düzenlediğinizde tableView: shouldIndentWhileEditingRowAtIndexPath: çağrılan temsilci yöntemini kontrol ettiniz mi?

tableView: shouldIndentWhileEditingRowAtIndexPath: delegesi yöntemini kullandığım tek zaman iyi çalıştı.

// Override to prevent indentation of cells in editing mode (in theory)
- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath {
    return NO;
}
2
katma
shouldIndentWhileEditingRowAtIndexPath delegesi yöntemini iOS 6'da düz bir tablo görünümü ile denedim ve işe yarıyor!
katma yazar Joseph Lin, kaynak
shouldIndentWhileEditing aranır, ancak bu yalnızca gruplandırılmış tablo görünümleri için çalışır, benimki düzdür ve olması gerekir: /
katma yazar Nareille, kaynak
Aradığım% 100, teşekkürler efendim
katma yazar anders, kaynak

İçerik görünümünüzün otomatikleştirici maskesini veya hücrenizdeki öğeleri değiştirmeyi deneyin. Girinti, hücreniz düzenleme moduna girdiğinde, içerik görünümünün aksesuarları göstermesi ve içeriğin onunla birlikte hareket etmesi için yeniden boyutlandırılmasıdır.

Hücrenizde ne olduğunu bilmeden özel tavsiye vermek zordur, ancak sabit sol veya sağ kenar boşluklarına bakmak istersiniz.

1
katma
Hücremde bir düğme ve iki etiket var, ancak aynı zamanda içeri girilmemesi gereken cell.contentView.backgroundColor'a da bir resim ayarladım. IB'de ölçü müfettişinde çeşitli ve en fazla devre dışı bırakılmış kırmızı hat kombinasyonlarını denedim ve hiçbiri şu ana kadar istenen etkiye sahip değildi. Doğru kombinasyonu kaçırdım mı? Teşekkür ederim.
katma yazar Nareille, kaynak
Görüntü, düğmeler ve etiketler girintilidir. Ve dediğim gibi, kırmızı çizgilerin değiştirilmesi hiç bir etkiye sahip değildir :( CustomCell için, yanı sıra düğme ya da etiketler için denedim.Gerçekte, hücremde sağa doğru girintiye benziyor ve sağ taraftaki kırpmalar gibi görünüyor hareket işaretini görüntülemek için
katma yazar Nareille, kaynak
Sadece çalışmayan arka plan resmi mi yoksa etiketler ve düğmeler mi? Ters problemim vardı, özel bir düzenim vardı ve girintilemeyi istedim ama yoktu ve otorite ediciydi.
katma yazar jrturton, kaynak

Bunu sadece iOS 6'da denedim.

shouldIndentWhileEditingRowAtIndexPath temsilci yöntemi artık düz tablo görünümünde de çalışır.

---- Düzenlendi -----

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

0
katma
iOS 8'de tek seçimle bile çalışmıyor
katma yazar Dima Deplov, kaynak

Bende aynı problem vardı. Nedeni: Onlar girintili değil, otomatik olarak yeniden boyutlandırıldı. Kaldır düğmesi, hücrenin görünümü (ve onun alt görünümleri) yeniden boyutlandırıldığında gösterilir.

Çözüm: İhtiyacınız olduğunda özel masa hücresinin alt görünümlerinin (etiketler veya üzerine koyduğunuz her şey) otomatik boyutlandırma davranışını InterfaceBuilder/Xcode'da ayarlayın.

0
katma

Sadece bir UIView'ı backgroundView çıkışına bağlarsanız, hiç hareket etmediğini fark ettim. Otomatizan bayraklarla bir araya gelmek gerçekten ihtiyacınız olan şey.

0
katma