4 satırlı bir tablo görünümü ayarladığımda, doldurulmuş satırların altında hala fazladan ayırıcı çizgiler (veya fazladan boş hücreler) var.
Bu hücreleri nasıl çıkarabilirim?
4 satırlı bir tablo görünümü ayarladığımda, doldurulmuş satırların altında hala fazladan ayırıcı çizgiler (veya fazladan boş hücreler) var.
Bu hücreleri nasıl çıkarabilirim?
Yanıtlar:
Bir UIView'i tabloya sürüklemeniz yeterlidir. Film şeridinde, özel hücrelerinizin altında en üstte bulunur. "Altbilgi" olarak adlandırmayı tercih edebilirsiniz.
Burada netlik için yeşil renkte gösterilir, muhtemelen net renk istersiniz.
Yüksekliği ayarlayarak tablonun "alt sıçramasının" nasıl tercih edileceğini etkileyebileceğinizi unutmayın. (Sıfır yüksekliği genellikle iyidir).
Programlı olarak yapmak için:
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.tableFooterView = UIView()
}
- (void)viewDidLoad
{
[super viewDidLoad];
// This will remove extra separators from tableview
self.tableView.tableFooterView = [UIView new];
}
ya da isterseniz,
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
Tablo görünümü denetleyicisine ekle ...
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
// This will create a "invisible" footer
return CGFLOAT_MIN;
}
ve gerekirse ...
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
return [UIView new];
// If you are not using ARC:
// return [[UIView new] autorelease];
}
tableFooterView
tablo hala o hücrenin altında içerik beklediğini olarak, yaprakları sıradaki son hücreye bir ayırıcı. Tarihsel yolu kullanmak, son ayırıcıyı ortadan kaldıracak ve genel olarak daha iyi görünecektir.
İşte bunu gruplandırılmış tablo stilini kullanarak yapmanın başka bir yolu ve muhtemelen tahmin edemeyeceğiniz bir yöntem. Tabloya bir üstbilgi ve altbilgi eklemek (belki bir veya diğeri yeterli, kontrol edilmemiş) ayırıcıların dolgu / boş satırlardan kaybolmasına neden olur.
Bunun üzerine tökezledim, çünkü etli parmaklı bir tablo hücresi yerine düğmelere basma riskini azaltmak için masaların üstünde ve altında biraz boşluk istedim. Üstbilgi ve altbilgi olarak boş bir görünüm yapıştırmak için bir yöntem. İstediğiniz yüksekliği kullanın, yine de ekstra ayırıcı çizgileri ortadan kaldırırsınız.
- (void) addHeaderAndFooter
{
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)];
v.backgroundColor = [UIColor clearColor];
[self.myTableView setTableHeaderView:v];
[self.myTableView setTableFooterView:v];
[v release];
}
@Casebash'a yanıt olarak, uygulamamdaki koda geri döndüm (iTunes mağazasında "AcmeLists" Liste Yöneticisi ...) ve doğrulamak için addHeaderAndFooter yöntemini kısa devre yaptım. Onsuz , ekstra satır ayırıcıları var; kod ile, ben bu pencere ek gördüğünüz var: hiçbir tablo satır ayırıcılar resim . Bu yüzden neden senin için işe yaramayacağından emin değilim. Dahası, bir tablo görünümünde herhangi bir özel altbilgiye sahip olmanın, altındaki boş satırlar için satır ayırıcıları çizmeyi durdurması gerektiği anlamına gelir. Bu iğrenç olurdu. Referans olarak, ekranda görüntülenenden daha fazla satırın bulunduğu tablolara ve sonra iki sıralı bir tabloya baktım. Her iki durumda da, yabancı ayırıcılar yoktur.
Özel görünümleriniz aslında eklenmemiş olabilir. Bunu kontrol etmek için, arka plan rengini clearColor
ör [UIColor redColor]
. Tablonun altında kırmızı çubuklar görmüyorsanız, altbilginiz ayarlanmamıştır.
Swift'teki UITableView'da boş satırlar için ek ayırıcı satırları kaldırma
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.yourTableview.tableFooterView = UIView()
}
Wkw cevabını uzatmak istiyorum :
Sadece yüksekliği 0 olan altbilgi eklemek hile yapar. (sdk 4.2, 4.4.1'de test edilmiştir)
- (void) addFooter
{
UIView *v = [[UIView alloc] initWithFrame:CGRectZero];
[self.myTableView setTableFooterView:v];
}
veya daha da basit - tablo görünümünüzü ayarladığınız yere şu satırı ekleyin:
//change height value if extra space is needed at the bottom.
[_tableView setTableFooterView:[[UIView alloc] initWithFrame:CGRectMake(0,0,0,0)]];
veya daha da basit - ayırıcıları kaldırmak için:
[_tableView setTableFooterView:[UIView new]];
Wkw tekrar teşekkürler :)
Basitçe bir sürükle UIView
SİZİN içine UITableView
altbilgi. Altbilgi görünümünün yüksekliğini 0 olarak ayarlayın.
Bunu dene. Benim için çalıştı:
- (void) viewDidLoad
{
[super viewDidLoad];
// Without ARC
//self.tableView.tableFooterView = [[[UIView alloc] init] autorelease];
// With ARC, tried on Xcode 5
self.tableView.tableFooterView = [UIView new];
}
Swift kullanıyorsanız, tablo görünümünü yöneten denetleyicinin viewDidLoad öğesine aşağıdaki kodu ekleyin :
override func viewDidLoad() {
super.viewDidLoad()
//...
// Remove extra separators
tableView.tableFooterView = UIView()
}
Sonunda boş bir altbilgi ekleyebilirsiniz, ardından boş hücreleri gizler, ancak aynı zamanda oldukça çirkin görünür:
tableView.tableFooterView = UIView()
Daha iyi bir yaklaşım vardır: altbilgi ve boş hücreler artık gösterilmeyeceğinden tablo görünümünün sonuna 1 puntoluk bir satır ekleyin.
let footerView = UIView()
footerView.frame = CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 1)
footerView.backgroundColor = tableView.separatorColor
tableView.tableFooterView = footerView
sadece bu kodu ekleyin ( Swift ). .
tableView.tableFooterView = UIView()
J. Costa'nın çözümünü ilerletmek: Bu kod satırını koyarak tabloya genel bir değişiklik yapabilirsiniz:
[[UITableView appearance] setTableFooterView:[[UIView alloc] initWithFrame:CGRectZero]];
mümkün olan ilk yöntemin içinde (genellikle AppDelegate
, içinde: application:didFinishLaunchingWithOptions:
yöntemi).
Bu sorunun cevap kabul edildiğini biliyorum, ancak buraya Ekstra ayırıcı çizgisini gizlemek için farklı yollar koydum UITableView
.
tableView
Standart ayırıcı satırını gizleyebilir ve özel satırınızı her hücrenin üstüne ekleyebilirsiniz.
Güncelleme:
Özel ayırıcı eklemenin en kolay yolu 1 UIView
piksel yüksekliğe basit eklemektir :
UIView* separatorLineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 1)];
separatorLineView.backgroundColor = [UIColor grayColor]; /// may be here is clearColor;
[cell.contentView addSubview:separatorLineView];
VEYA
self.tblView=[[UITableView alloc] initWithFrame:CGRectMake(0,0,320,370) style:UITableViewStylePlain];
self.tblView.delegate=self;
self.tblView.dataSource=self;
[self.view addSubview:self.tblView];
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)];
v.backgroundColor = [UIColor clearColor];
[self.tblView setTableHeaderView:v];
[self.tblView setTableFooterView:v];
[v release];
VEYA
- (float)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
// This will create a "invisible" footer
return 0.01f;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
// To "clear" the footer view
return [[UIView new] autorelease];
}
VEYA Şimdiye kadar sevdiğim en iyi ve basit yol
self.tableView.tableFooterView = [[UIView alloc] init];
Birini deneyin;
Bu soruya birçok cevap bulabilirsiniz. Birçoğu UITableView
' tableFooterView
özniteliği ile manipülasyon etrafında ve bu boş satırları gizlemek için uygun bir yoldur. Kolaylık sağlamak için, Interface Builder'dan boş satırları açıp kapamanıza izin veren basit bir uzantı oluşturdum. Bu gist dosyasından kontrol edebilirsiniz . Umarım biraz zaman kazanabilir.
extension UITableView {
@IBInspectable
var isEmptyRowsHidden: Bool {
get {
return tableFooterView != nil
}
set {
if newValue {
tableFooterView = UIView(frame: .zero)
} else {
tableFooterView = nil
}
}
}
}
Kullanımı:
tableView.isEmptyRowsHidden = true
uitableview ekstra ayırıcı çizgi hızlı 3.0 gizlemek ekstra ayırıcı hatları gizlemek
self.tbltableView.tableFooterView = UIView(frame: .zero)
Son hücreden sonra herhangi bir ayırıcı istemiyorsanız, altbilginiz için sıfıra yakın ancak sıfır olmayan bir yüksekliğe ihtiyacınız vardır.
Sizin UITableViewDelegate
:
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return .leastNormalMagnitude
}
Swift şunlarla harika çalışır:
tableView.tableFooterView = UIView()
İstediğiniz ayırıcı rengini arka plan rengi,% 100 genişlik, x0 y-1 konumunda 1 piksel yüksekliğe sahip bir görünümü tableViewCell'e eklemeniz yeterlidir. TableViewCell'in alt görünümleri kırpmadığından emin olun; bunun yerine tableView gerekir.
Böylece, kod veya IB başına herhangi bir saldırı olmadan sadece mevcut hücreler arasında mutlak basit ve çalışan bir ayırıcı elde edersiniz.
Not: Dikey bir üst sıçramada 1. ayırıcı görünür, ancak bu sorun olmamalı, çünkü bu varsayılan iOS davranışıdır.
Programlı olarak UItableview altından ekstra ayırıcı satırları ortadan kaldırmak için, sadece iki satır kod yazmanız yeterlidir ve bu satırdan fazladan ayırıcı kaldırılır.
tableView.sectionFooterHeight = 0.f;
tableView.sectionHeaderHeight = 0.f;
Bu numara hep benim için çalışıyor, kendini dene.
Kabul edilen cevabın tek bir parçasını uygulamada şansım vardı (iOS 9+, Swift 2.2). Uygulamayı denemiştim:
self.tableView.tableFooterView = UIView(frame: .zero)
Ancak, benim üzerimde bir etkisi olmadı tableView
- kullandığım gerçeği ile ilgisi olabileceğine inanıyorumUITableViewController
.
Bunun yerine, sadece viewForFooterInSection
yöntemi geçersiz kılmak zorunda kaldı (ben tableFooterView
başka bir yerde ayarlanmadı ):
override func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return UIView(frame: .zero)
}
Bu tableView
, tek bir bölüm içeren bir için iyi çalıştı (birden fazla bölümünüz varsa, son bölümü belirtmeniz gerekir).
Yalnızca bir bölümünüz varsa, o zaman en hızlı ve en kolay yol Tablo Görünümü Stilini "Düz" den "Gruplanmış" olarak ayarlamaktır. (resme bakın)
Daha fazla bölümünüz varsa, başlık yüksekliğini sıfıra ayarlamanız gerekebilir (müşterinizin / proje yöneticinizin zevkine bağlı olarak)
Daha fazla bölümünüz varsa ve başlıklarla uğraşmak istemiyorsanız (en basit durumda sadece bir satır olsa bile), önceki yanıtlarda açıklandığı gibi bir UIView'yi altbilgi olarak ayarlamanız gerekir)
Hızlı ve kolay Swift 4 yolu.
override func viewDidLoad() {
tableView.tableFooterView = UIView(frame: .zero)
}
Statik hücreleriniz varsa. Ayırıcıyı Inspector penceresinden de kapatabilirsiniz. (ayırıcıya ihtiyacınız varsa bu istenmeyecektir. Bu durumda yukarıda gösterilen yöntemi kullanın)
super.viewDidLoad()
) ve daha iyi wiki cevabına dahil edildi. Tüm ayırıcıları kaldırmaya gelince, bu sorunun konusu bu değildir, bu nedenle son düzenlemenizi daha iyi geri alın ve / veya yanıtınızı tamamen silin.
UITableview uygulamasında istenmeyen alanı kaldırmak istiyorsanız aşağıdaki iki yöntemi kullanabilirsiniz
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 0.1;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.1;
}
Boyunca yardımcı olan bu küçük tableview uzantısını ekledim
extension UITableView {
func removeExtraCells() {
tableFooterView = UIView(frame: .zero)
}
}
Bununla dene
için Objective C
- (void)viewDidLoad
{
[super viewDidLoad];
// This will remove extra separators from tableview
self.yourTableView.tableFooterView = [UIView new];
}
için Swift
override func viewDidLoad() {
super.viewDidLoad()
self.yourTableView.tableFooterView = UIView()
}
Eğer bir var searchbar
içinde senin view
(örneğin sonuç sayısını sınırlamak için), ayrıca içinde aşağıdaki eklemek zorunda shouldReloadTableForSearchString
veshouldReloadTableForSearchScope:
controller.searchResultsTable.footerView = [ [ UIView alloc ] initWithFrame:CGRectZero ];
Swift (I 4.0 kullanıyorum), özel oluşturarak gerçekleştirebilirsiniz UITableViewCell
sınıf ve yöntemi. Sonra hepsi 0 . (tablo görünümündeki ana sınıfımın net bir arka planı var) renk.overriding
setSelected
separator insets
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// eliminate extra separators below UITableView
self.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
}