जब मैंने 4 पंक्तियों के साथ तालिका दृश्य सेट किया, तो अभी भी भरी हुई पंक्तियों के नीचे अतिरिक्त विभाजक रेखाएं (या अतिरिक्त रिक्त कोशिकाएं) हैं।
मैं इन कोशिकाओं को कैसे हटाऊंगा?
जब मैंने 4 पंक्तियों के साथ तालिका दृश्य सेट किया, तो अभी भी भरी हुई पंक्तियों के नीचे अतिरिक्त विभाजक रेखाएं (या अतिरिक्त रिक्त कोशिकाएं) हैं।
मैं इन कोशिकाओं को कैसे हटाऊंगा?
जवाबों:
बस एक UIView को टेबल पर खींचें। स्टोरीबोर्ड में, यह आपकी कस्टम कोशिकाओं के नीचे सबसे ऊपर बैठेगा। आप इसे "पाद" नाम देना पसंद कर सकते हैं।
यहाँ यह स्पष्टता के लिए हरे रंग में दिखाया गया है, आप शायद स्पष्ट रंग चाहते हैं।
ध्यान दें कि ऊंचाई को समायोजित करके, आप प्रभावित कर सकते हैं कि तालिका के "नीचे उछाल" को कैसे नियंत्रित किया जाता है, जैसा कि आप पसंद करते हैं। (ऊँचाई शून्य आमतौर पर ठीक है)।
यह प्रोग्राम करने के लिए:
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];
}
या यदि आप चाहें,
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
तालिका दृश्य नियंत्रक में जोड़ें ...
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
// This will create a "invisible" footer
return CGFLOAT_MIN;
}
और यदि आवश्यक हो ...
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
return [UIView new];
// If you are not using ARC:
// return [[UIView new] autorelease];
}
tableFooterView
पंक्ति में अंतिम सेल पर एक विभाजक का उपयोग करते हुए , क्योंकि तालिका अभी भी उस सेल के नीचे की सामग्री का अनुमान लगाती है। ऐतिहासिक तरीके का उपयोग करने से उस अंतिम विभाजक को खत्म कर दिया जाएगा और समग्र रूप से बेहतर दिखाई देगा।
यहां एक और तरीका है कि समूहीकृत टेबल शैली को डब्ल्यू / आउट किया जाए, और एक जिसे आप अनुमान नहीं करेंगे। तालिका में शीर्षलेख और पाद लेख जोड़ना (शायद एक या दूसरे उपद्रव, जाँच नहीं की गई) विभाजकों को भराव / रिक्त पंक्तियों से गायब करने का कारण बनता है।
मैं इस पर लड़खड़ाया क्योंकि मुझे मेज के ऊपर और नीचे की मेज पर थोड़ी जगह चाहिए थी ताकि मांसल उंगलियों के साथ टेबल सेल के बजाय बटन मारने का जोखिम कम हो सके। यहाँ हेडर और फुटर के रूप में एक रिक्त दृश्य को छड़ी करने की एक विधि है। आपको जो भी ऊंचाई पसंद है उसका उपयोग करें, आप अभी भी अतिरिक्त विभाजक लाइनों को खत्म करते हैं।
- (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 के जवाब में, मैं अपने ऐप ("AcmeLists" सूची प्रबंधक को आईट्यून्स स्टोर में ...) कोड में वापस चला गया और सत्यापित करने के लिए addHeaderAndFooter विधि को शॉर्ट-सर्कुलेट किया। इसके बिना , मेरे पास अतिरिक्त पंक्ति विभाजक हैं; कोड के साथ, मेरे पास इस विंडो स्नैप में जो कुछ भी दिखाई देता है: कोई तालिका पंक्ति विभाजक चित्र नहीं है । तो मुझे यकीन नहीं है कि यह आपके लिए काम क्यों नहीं करेगा। इसके अलावा, यह मेरे लिए समझ में आता है कि किसी टेबल व्यू पर कोई कस्टम फूटर रखने के लिए जरूरी है कि इसके नीचे की खाली पंक्तियों के लिए पंक्ति विभाजकों को खींचना बंद करना होगा। यह बात छिपी होगी। संदर्भ के लिए, मैंने उन तालिकाओं को देखा जहां स्क्रीन पर देखे जाने की तुलना में अधिक पंक्तियाँ थीं, और फिर दो पंक्तियों वाली तालिका के लिए। दोनों मामलों में, कोई बाहरी विभाजक नहीं है।
शायद आपके कस्टम विचार वास्तव में जोड़े नहीं गए थे। यह जाँचने के लिए, पृष्ठभूमि रंग को इसके अलावा किसी और चीज़ पर सेट करें clearColor
, जैसे [UIColor redColor]
। यदि आपको तालिका के निचले भाग में कुछ लाल पट्टियाँ दिखाई नहीं देती हैं, तो आपका पाद सेट नहीं किया गया था।
स्विफ्ट में UITableView में खाली पंक्तियों के लिए अतिरिक्त विभाजक रेखाओं को हटाना
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.yourTableview.tableFooterView = UIView()
}
मैं wkw उत्तर का विस्तार करना चाहूंगा :
केवल ऊँचाई 0 के साथ केवल पाद लेख जोड़ने से चाल चलेगी। (एसडीके 4.2, 4.4.1 पर परीक्षण किया गया)
- (void) addFooter
{
UIView *v = [[UIView alloc] initWithFrame:CGRectZero];
[self.myTableView setTableFooterView:v];
}
या इससे भी सरल - जहां आपने अपना टेबलव्यू सेट किया है, इस लाइन को जोड़ें:
//change height value if extra space is needed at the bottom.
[_tableView setTableFooterView:[[UIView alloc] initWithFrame:CGRectMake(0,0,0,0)]];
या यहां तक कि सरल - किसी भी विभाजक को हटाने के लिए:
[_tableView setTableFooterView:[UIView new]];
धन्यवाद फिर से wkw करने के लिए :)
बस पाद के रूप UIView
में अपने में खींचें UITableView
। पाद दृश्य की ऊँचाई ० पर सेट करें।
इसे इस्तेमाल करे। इसने मेरे लिए काम किया:
- (void) viewDidLoad
{
[super viewDidLoad];
// Without ARC
//self.tableView.tableFooterView = [[[UIView alloc] init] autorelease];
// With ARC, tried on Xcode 5
self.tableView.tableFooterView = [UIView new];
}
यदि आप स्विफ्ट का उपयोग कर रहे हैं, तो टेबलव्यू को प्रबंधित करने वाले कंट्रोलर के देखने के लिए निम्न कोड जोड़ें :
override func viewDidLoad() {
super.viewDidLoad()
//...
// Remove extra separators
tableView.tableFooterView = UIView()
}
आप अंत में एक खाली पाद लेख जोड़ सकते हैं तो यह खाली कोशिकाओं को छिपा देगा लेकिन यह काफी बदसूरत दिखाई देगा:
tableView.tableFooterView = UIView()
एक बेहतर दृष्टिकोण है: तालिका दृश्य के अंत में 1 बिंदु रेखा को पाद के रूप में जोड़ें और खाली कोशिकाओं को भी अब नहीं दिखाया जाएगा।
let footerView = UIView()
footerView.frame = CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 1)
footerView.backgroundColor = tableView.separatorColor
tableView.tableFooterView = footerView
बस इस कोड ( स्विफ्ट ) को जोड़ें । ।
tableView.tableFooterView = UIView()
जे। कोस्टा के समाधान को आगे बढ़ाना: आप इस कोड की लाइन को लगाकर तालिका में एक वैश्विक परिवर्तन कर सकते हैं:
[[UITableView appearance] setTableFooterView:[[UIView alloc] initWithFrame:CGRectZero]];
पहला संभव तरीका (आमतौर पर AppDelegate
: इन application:didFinishLaunchingWithOptions:
) विधि के अंदर।
मुझे पता है कि इस प्रश्न का उत्तर स्वीकार कर लिया गया है, लेकिन मैंने यहां एक्स्ट्रा सेपरेटर लाइन को कैसे छिपाया जाए इसके लिए अलग-अलग तरीके बताए हैं UITableView
।
आप tableView
मानक विभाजक रेखा छिपा सकते हैं , और प्रत्येक सेल के शीर्ष पर अपनी कस्टम लाइन जोड़ सकते हैं।
अपडेट करें:
कस्टम विभाजक जोड़ने का सबसे आसान तरीका UIView
1px ऊंचाई का सरल जोड़ना है :
UIView* separatorLineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 1)];
separatorLineView.backgroundColor = [UIColor grayColor]; /// may be here is clearColor;
[cell.contentView addSubview:separatorLineView];
या
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];
या
- (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];
}
या सबसे अच्छा और सरल तरीका मुझे पसंद है
self.tableView.tableFooterView = [[UIView alloc] init];
किसी एक की कोशिश करो;
आपको इस प्रश्न के बहुत से उत्तर मिल सकते हैं। साथ हेरफेर के आसपास उनमें से अधिकांश UITableView
की tableFooterView
विशेषता है और इस उचित तरीके से खाली पंक्तियों को छिपाने के लिए है। सुविधा के लिए मैंने सरल एक्सटेंशन बनाया है जो इंटरफ़ेस बिल्डर से खाली पंक्तियों को चालू / बंद करने की अनुमति देता है। आप इसे इस जिस्ट फाइल से देख सकते हैं । मुझे उम्मीद है कि यह आपका थोड़ा सा समय बचा सकता है।
extension UITableView {
@IBInspectable
var isEmptyRowsHidden: Bool {
get {
return tableFooterView != nil
}
set {
if newValue {
tableFooterView = UIView(frame: .zero)
} else {
tableFooterView = nil
}
}
}
}
उपयोग:
tableView.isEmptyRowsHidden = true
uitableview अतिरिक्त विभाजक रेखा अतिरिक्त विभाजक रेखाएँ छिपाती हैं जो स्विफ्ट 3.0 में छिपती हैं
self.tbltableView.tableFooterView = UIView(frame: .zero)
यदि आप अंतिम सेल के बाद कोई विभाजक नहीं चाहते हैं, तो आपको अपने पाद के लिए करीब शून्य लेकिन गैर-शून्य ऊंचाई की आवश्यकता है।
अपने में UITableViewDelegate
:
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return .leastNormalMagnitude
}
स्विफ्ट के साथ काम करता है महान:
tableView.tableFooterView = UIView()
बस वांछित विभाजक रंग के साथ एक दृश्य जोड़ें पृष्ठभूमि रंग के रूप में, 100% चौड़ाई, आपके xViewCell के लिए x0 y-1 की स्थिति में 1px ऊंचाई। सुनिश्चित करें कि tableViewCell साक्षात्कार को क्लिप नहीं करता है, इसके बजाय tableView चाहिए।
तो आपको बिना किसी हैक प्रति कोड या आईबी के मौजूदा सेल के बीच एक पूर्ण सरल और काम करने वाला विभाजक मिलता है।
नोट: एक ऊर्ध्वाधर शीर्ष उछाल पर 1 विभाजक दिखाता है, लेकिन यह एक समस्या नहीं होनी चाहिए क्योंकि यह डिफ़ॉल्ट iOS व्यवहार है।
प्रोग्रामटेबल के नीचे से अतिरिक्त विभाजक लाइनों को प्रोग्रामेटिक रूप से समाप्त करने के लिए, बस कोड की दो पंक्तियों के बाद नीचे लिखें और यह इसके साथ अतिरिक्त विभाजक को हटा देगा।
tableView.sectionFooterHeight = 0.f;
tableView.sectionHeaderHeight = 0.f;
यह ट्रिक मेरे लिए हर समय काम करती है, अपने आप को आज़माएं।
मेरे पास स्वीकृत उत्तर (iOS 9+, स्विफ्ट 2.2) के एक टुकड़े को लागू करने के लिए कुछ किस्मत थी। मैंने लागू करने की कोशिश की थी:
self.tableView.tableFooterView = UIView(frame: .zero)
हालांकि, मेरे ऊपर कोई प्रभाव नहीं पड़ा tableView
- मेरा मानना है कि इसका इस तथ्य से कुछ लेना-देना हो सकता है कि मैं उपयोग कर रहा था UITableViewController
।
इसके बजाय, मुझे केवल viewForFooterInSection
विधि को ओवरराइड करना पड़ा (मैंने tableFooterView
कहीं और सेट नहीं किया ):
override func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return UIView(frame: .zero)
}
इसने tableView
एकल खंड के साथ काम किया (यदि आपके पास कई खंड हैं, तो आपको अंतिम एक निर्दिष्ट करने की आवश्यकता है)।
यदि आपके पास केवल एक ही खंड है, तो सबसे तेज़ और आसान तरीका सिर्फ "दृश्य" से "समूहीकृत" तक तालिका दृश्य शैली निर्धारित करना है। (चित्र देखें)
यदि आपके पास अधिक सेक्शन हैं, तो आपको हेडर की ऊँचाई को शून्य पर सेट करने की आवश्यकता हो सकती है (आपके / आपके ग्राहक / आपके प्रोजेक्ट मैनेजर के स्वाद के आधार पर)
यदि आपके पास अधिक अनुभाग हैं, और हेडर के साथ गड़बड़ नहीं करना चाहते हैं (भले ही यह सबसे सरल मामले में सिर्फ एक पंक्ति है), तो आपको एक पाद के रूप में एक यूआईवाईयूवाई सेट करने की आवश्यकता है, क्योंकि यह पिछले उत्तरों में समझाया गया था)
त्वरित और आसान स्विफ्ट 4 रास्ता।
override func viewDidLoad() {
tableView.tableFooterView = UIView(frame: .zero)
}
यदि आपके पास स्थैतिक कोशिकाएं हैं। आप इंस्पेक्टर विंडो से विभाजक को भी बंद कर सकते हैं। (यह वांछनीय नहीं होगा यदि आपको विभाजक की आवश्यकता है। उस मामले में ऊपर दिखाए गए तरीके का उपयोग करें)
super.viewDidLoad()
) के बारे में बेहतर स्पष्टीकरण के साथ और शीर्ष पर विकि उत्तर में शामिल है। सभी विभाजकों को हटाने के लिए, यह वास्तव में ऐसा नहीं है कि यह सवाल क्या है, इसलिए अपने अंतिम संपादन को बेहतर बनाएं और / या अपने उत्तर को पूरी तरह से हटा दें।
यदि आप UITableview में अवांछित स्थान को हटाना चाहते हैं तो आप नीचे दो विधियों का उपयोग कर सकते हैं
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 0.1;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.1;
}
मैंने इस छोटे से टेबलव्यू एक्सटेंशन को जोड़ा है जो पूरे में मदद करता है
extension UITableView {
func removeExtraCells() {
tableFooterView = UIView(frame: .zero)
}
}
इस के साथ प्रयास करें
के लिए उद्देश्य सी
- (void)viewDidLoad
{
[super viewDidLoad];
// This will remove extra separators from tableview
self.yourTableView.tableFooterView = [UIView new];
}
के लिए स्विफ्ट
override func viewDidLoad() {
super.viewDidLoad()
self.yourTableView.tableFooterView = UIView()
}
मामले में आप एक है searchbar
कि आपका view
(उदाहरण के लिए परिणामों की संख्या सीमित करने के लिए), आप भी में निम्नलिखित जोड़ने के लिए shouldReloadTableForSearchString
औरshouldReloadTableForSearchScope:
controller.searchResultsTable.footerView = [ [ UIView alloc ] initWithFrame:CGRectZero ];
स्विफ्ट में (मैं 4.0 का उपयोग कर रहा हूँ), आप एक कस्टम बनाकर ऐसा कर सकते हैं UITableViewCell
वर्ग, और विधि। फिर सभी को 0 । (टेबल व्यू के साथ मेरी मुख्य कक्षा में स्पष्ट पृष्ठभूमि है) रंग।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)
}