2014-10-09 19 views
14

iOS8'in piyasaya sürülmesiyle, tablo görünümünü, kendinden boyutlandırma hücrelerinden yararlanan hücrelerle tasarladım. Ancak iOS7'de çalışmak için tablolarıma ihtiyacım var. Bunu nasıl yaparım? Kendi kendine boyutlandırma hücrelerinin çalışma zamanında desteklenip desteklenmediğini kontrol etmenin bir yolu var mı, yoksa iOS7'de çağrılmayacak olan denetleyicimde bazı tablo delege yöntemlerini uygulayabilir miyim?iOS7'de kendi kendine boyutlandırma hücrelerini nasıl destekleyebilirim?

Unable to simultaneously satisfy constraints. 
    Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
(
    "<NSLayoutConstraint:0x7fc912d1d5a0 V:|-(>=11)-[UILabel:0x7fc912d13900] (Names: '|':UITableViewCellContentView:0x7fc912d13400)>", 
    "<NSLayoutConstraint:0x7fc912d1d6b0 V:[UILabel:0x7fc912d13900]-(11)-| (Names: '|':UITableViewCellContentView:0x7fc912d13400)>", 
    "<NSAutoresizingMaskLayoutConstraint:0x7fc912d24d80 h=--& v=--& V:[UITableViewCellContentView:0x7fc912d13400(0.5)]>" 
) 
+3

Bunu yapamazsınız, iOS 7, iOS 8'deki kendi kendini denetleyen hücreleri desteklemez. Bir 'tableView: heightForRowAtIndexPath:' yazmanız gerekir. Dat, hücre için doğru yüksekliği hesaplar. – rckoenes

+0

iOS7'yi desteklemeniz gerekiyorsa, kendi kendine boyutlandırma özelliğini kullanmayın. – CrimsonChris

+1

Kendinden boyutlandırma hücrelerinin iOS7'de desteklenmediğini anlıyorum. Sorunum, kendiliğinden boyutlandırma hücrelerini kullanarak iOS8 için tasarlanmış tablolarla ne yapılması gerektiğidir. Örneğin. tableView: heightForRowAtIndexPath: yalnızca iOS7'de değil iOS8'de çağrılsın mı? Kısacası, hem iOS7 hem de iOS8 için çalışan kodları nasıl yazarım? –

cevap

25

Bu benim şimdiye kadar bulduk çözümdür, ama daha ziyade belirli sürüm numarası kontrol etmeyi gerektirir: Ben -iOS7 kendini boyutlandırma hücreleri ile masamı çalışırsanız

Böyle konsolda hataları olsun yeteneği daha.

override func viewDidLoad() { 

    if NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1 { 
     self.tableView.estimatedRowHeight = 80 
     self.tableView.rowHeight = UITableViewAutomaticDimension 
    } 
} 

iOS 7 için her hücre için bir yükseklik hesaplamak gerekir: Eğer sürüm olarak iOS 8 veya üstü varsa sadece UITableViewAutomaticDimension ayarlayın. , Her zaman bir hücre oluşturmak zamanki heightForRowAtIndexPath yöntemi yazabilir, 8.0'dan daha eski iOS sürümleri için

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    if NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1 { 
     return UITableViewAutomaticDimension 
    } 
    return 50 // Or whatever calculated value you need for cell height 
} 
+1

Benim için de çalıştı ama ben() 'in if ifadesinin etrafında eklemem gerekiyordu. Ayrıca eğer geri dönerseniz başka ihtiyacınız yoktur. –

+1

Bu, iOS sürümlerinde 7.1'den daha yeni bir sürüme dönüşecek. Özellikleri kontrol etmeyi ('responsesToSelector' kullanarak) veya <8.0 ile kontrol etmeyi tercih ederim. – DrMickeyLauer

+0

Bunu objektif için nasıl yapabilirim? –

1

otomatik düzen üzerinde geçmek çalıştırın: iOS 8 işletim Ama eğer sen yükseklik olarak UITableViewAutomaticDimension dönebilir ve ardından gerçek yüksekliği döndür.

İlgili konular