เมื่อฉันตั้งค่ามุมมองตารางที่มี 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" List Manager ใน iTunes store ... ) และใช้วิธี addHeaderAndFooter ลัดวงจรเพื่อตรวจสอบ ไม่ว่าฉันมีตัวคั่นแถวพิเศษ; ด้วยรหัสที่ฉันมีสิ่งที่คุณเห็นในหน้าต่างนี้สแนป: ไม่มีภาพแถวของตารางคั่น ดังนั้นฉันจึงไม่แน่ใจว่าทำไมมันไม่ได้ผลสำหรับคุณ ยิ่งกว่านั้นฉันรู้สึกว่าการมีส่วนท้ายแบบกำหนดเองใด ๆ ในมุมมองตารางจำเป็นต้องหยุดการวาดตัวคั่นแถวสำหรับแถวว่างด้านล่าง นั่นจะน่าเกลียด สำหรับการอ้างอิงฉันดูตารางที่มีจำนวนแถวมากกว่าที่สามารถดูได้บนหน้าจอแล้วสำหรับตารางที่มีสองแถว ในทั้งสองกรณีไม่มีตัวคั่นภายนอก
บางทีมุมมองที่กำหนดเองของคุณไม่ได้ถูกเพิ่มเข้ามา ในการตรวจสอบว่าตั้งค่าสีพื้นหลังเป็นอย่างอื่นที่ไม่ใช่clearColor
เช่น[UIColor redColor]
เช่นหากคุณไม่เห็นแถบสีแดงที่ด้านล่างของตารางส่วนท้ายของคุณจะไม่ถูกตั้งค่า
การลบบรรทัดตัวคั่นพิเศษสำหรับแถวว่างใน UITableView ในSwift
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.yourTableview.tableFooterView = UIView()
}
ฉันต้องการขยายคำตอบwkw :
เพียงเพิ่มส่วนท้ายเท่านั้นที่มีความสูง 0 จะเป็นการหลอกลวง (ทดสอบกับ sdk 4.2, 4.4.1)
- (void) addFooter
{
UIView *v = [[UIView alloc] initWithFrame:CGRectZero];
[self.myTableView setTableFooterView:v];
}
หรือแม้แต่ง่ายกว่า - ที่ซึ่งคุณตั้งค่ามุมมอง Table ให้เพิ่มบรรทัดนี้:
//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
เป็นส่วนท้ายของคุณ ตั้งค่าความสูงของมุมมองท้ายกระดาษเป็น 0
ลองสิ่งนี้ มันใช้งานได้สำหรับฉัน:
- (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()
tableView.tableFooterView = UIView()
}
หากคุณกำลังใช้ Swift เพิ่มรหัสต่อไปนี้เพื่อviewDidLoadของคอนโทรลเลอร์ที่จัดการ tableview:
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
เพียงเพิ่มรหัสนี้ ( Swift ) .
tableView.tableFooterView = UIView()
การแก้ปัญหาของ J. Costa: คุณสามารถทำการเปลี่ยนแปลงทั่วโลกไปยังตารางได้โดยใส่รหัสบรรทัดนี้:
[[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
'stableFooterView
แอตทริบิวต์และนี่คือวิธีการที่เหมาะสมในการซ่อนแถวที่ว่างเปล่า เพื่อความสะดวกฉันได้สร้างส่วนขยายที่เรียบง่ายซึ่งช่วยให้สามารถเปิด / ปิดแถวว่างจากเครื่องมือสร้างอินเตอร์เฟส คุณสามารถตรวจสอบได้จากไฟล์ส่วนสำคัญนี้ ฉันหวังว่ามันจะประหยัดเวลาของคุณเล็กน้อย
extension UITableView {
@IBInspectable
var isEmptyRowsHidden: Bool {
get {
return tableFooterView != nil
}
set {
if newValue {
tableFooterView = UIView(frame: .zero)
} else {
tableFooterView = nil
}
}
}
}
การใช้งาน:
tableView.isEmptyRowsHidden = true
uitableview เส้นแยกพิเศษซ่อนเส้นคั่นพิเศษซ่อนใน swift 3.0
self.tbltableView.tableFooterView = UIView(frame: .zero)
หากคุณไม่ต้องการตัวคั่นใด ๆ หลังจากเซลล์สุดท้ายคุณต้องมีความสูงใกล้ศูนย์ แต่ความสูงที่ไม่เป็นศูนย์สำหรับส่วนท้ายของคุณ
ในUITableViewDelegate
:
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return .leastNormalMagnitude
}
Swift ใช้งานได้ดีกับ:
tableView.tableFooterView = UIView()
เพียงเพิ่มมุมมองด้วยสีตัวคั่นที่ต้องการเป็นสีพื้นหลังความกว้าง 100% ความสูง 1px ที่ตำแหน่ง x0 y-1 ใน tableViewCell ของคุณ ตรวจสอบให้แน่ใจว่า tableViewCell ไม่คลิปภาพตัวอย่าง แต่ควรดู tableView
ดังนั้นคุณจะได้ตัวแยกที่ง่ายและใช้งานได้จริงเฉพาะระหว่างเซลล์ที่มีอยู่โดยไม่มีการแฮ็กต่อรหัสหรือ IB
หมายเหตุ: บนเด้งแนวตั้งตัวคั่นที่ 1 จะปรากฏขึ้น แต่นั่นไม่น่าจะมีปัญหาเพราะมันเป็นพฤติกรรมเริ่มต้นของ iOS
ฉันใช้มุมมองตารางเพื่อแสดงจำนวนแถวความสูงคงที่ดังนั้นฉันจึงปรับขนาดและทำให้ไม่สามารถเลื่อนได้
หากต้องการกำจัดเส้นคั่นพิเศษจากด้านล่างของ UItableview โดยทางโปรแกรมให้เขียนโค้ดสองบรรทัดต่อไปนี้แล้วมันจะลบเครื่องหมายคั่นพิเศษออกจากนั้น
tableView.sectionFooterHeight = 0.f;
tableView.sectionHeaderHeight = 0.f;
เคล็ดลับนี้ใช้ได้กับฉันตลอดเวลาลองด้วยตัวเอง
ฉันโชคดีที่ได้ใช้คำตอบที่ได้รับการยอมรับ (iOS 9+, Swift 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
กับ a ในส่วนเดียว (ถ้าคุณมีหลายส่วนคุณต้องระบุอันสุดท้าย)
หากคุณมีเพียงส่วนเดียววิธีที่เร็วและง่ายที่สุดคือการตั้งค่าสไตล์มุมมองตารางจาก "ธรรมดา" เป็น "จัดกลุ่ม" (ดูภาพ)
หากคุณมีส่วนเพิ่มคุณอาจต้องตั้งความสูงส่วนหัวเป็นศูนย์ (ขึ้นอยู่กับ / / ลูกค้าของคุณ / รสนิยมของผู้จัดการโครงการของคุณ)
หากคุณมีส่วนมากขึ้นและไม่ต้องการยุ่งกับส่วนหัว (แม้ว่าจะเป็นเพียงหนึ่งบรรทัดในกรณีที่ง่ายที่สุด) คุณต้องตั้งค่า UIView เป็นส่วนท้ายตามที่อธิบายไว้ในคำตอบก่อนหน้า)
เป็นเพียงการต่อเติมเล็กน้อยสำหรับกระดานเรื่องราว:
extension UITableView {
@IBInspectable
var hideSeparatorForEmptyCells: Bool {
set {
tableFooterView = newValue ? UIView() : nil
}
get {
return tableFooterView == nil
}
}
}
Swift 4 วิธีที่ง่ายและรวดเร็ว
override func viewDidLoad() {
tableView.tableFooterView = UIView(frame: .zero)
}
หากคุณมีเซลล์คงที่ คุณยังสามารถปิดตัวแยกได้จากหน้าต่างตัวตรวจสอบ (สิ่งนี้จะไม่เป็นที่ต้องการถ้าคุณต้องการตัวแยกในกรณีที่ใช้วิธีการที่แสดงด้านบน)
super.viewDidLoad()
) และรวมอยู่ในคำตอบของ wiki ด้านบน สำหรับการลบตัวคั่นทั้งหมดนั้นไม่ใช่คำถามที่เกี่ยวกับเรื่องนี้ดังนั้นให้ย้อนกลับการแก้ไขครั้งล่าสุดของคุณและ / หรือลบคำตอบของคุณโดยสิ้นเชิง
หากคุณต้องการลบพื้นที่ที่ไม่ต้องการใน UITableview คุณสามารถใช้วิธีการด้านล่างสองวิธี
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 0.1;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.1;
}
ฉันได้เพิ่มส่วนขยาย tableview เล็ก ๆ ที่ช่วยตลอด
extension UITableView {
func removeExtraCells() {
tableFooterView = UIView(frame: .zero)
}
}
ลองกับสิ่งนี้
สำหรับวัตถุประสงค์ C
- (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()
}
ลองสิ่งนี้
self.tables.tableFooterView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 10.0f)];
UIKit
ไม่สร้างเซลล์ที่ว่างเปล่าเมื่อมีtableView
tableFooterView
ดังนั้นเราจึงสามารถให้เคล็ดลับและกำหนดเป็นศูนย์ความสูงของวัตถุเป็นส่วนท้ายของUIView
tableView
tableView.tableFooterView = UIView()
ในกรณีที่คุณมีsearchbar
ในview
(เพื่อ จำกัด จำนวนผลลัพธ์เช่น) คุณจะต้องเพิ่มสิ่งต่อไปนี้ในshouldReloadTableForSearchString
และshouldReloadTableForSearchScope:
controller.searchResultsTable.footerView = [ [ UIView alloc ] initWithFrame:CGRectZero ];
ในสวิฟท์ (ฉันใช้ 4.0) คุณสามารถทำได้โดยการสร้างที่กำหนดเองUITableViewCell
ชั้นเรียนและoverriding
setSelected
วิธี จากนั้นseparator insets
ทุกคนที่0 (คลาสหลักของฉันพร้อมมุมมองตารางมีสีพื้นหลังที่ชัดเจน) สี
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)
}