คำถามติดแท็ก uitableview

UITableView เป็นคลาสที่ใช้สำหรับแสดงและแก้ไขรายการข้อมูลบน iOS มุมมองตารางแสดงรายการในคอลัมน์เดียว UITableView เป็น subclass ของ UIScrollView ซึ่งอนุญาตให้ผู้ใช้เลื่อนผ่านตารางแม้ว่า UITableView อนุญาตให้เลื่อนแนวตั้งเท่านั้น

30
-didSelectRowAtIndexPath: ไม่ถูกเรียก
ฉันกำลังเขียนแอพ iOS ด้วยมุมมองตารางภายในมุมมองแท็บ ในตัวฉันUITableViewControllerฉันนำไปใช้-tableView:didSelectRowAtIndexPath:แต่เมื่อฉันเลือกแถวที่รันไทม์วิธีการจะไม่ถูกเรียก มุมมองตารางกำลังถูกบรรจุแม้ว่าดังนั้นฉันรู้ว่าวิธีการ tableView อื่น ๆ ในตัวควบคุมของฉันจะถูกเรียก ใครบ้างมีความคิดใด ๆ ที่ฉันอาจทำให้ผิดเพื่อให้สิ่งนี้เกิดขึ้นได้?

23
คุณโหลด UITableViewCells ที่กำหนดเองจากไฟล์ Xib ได้อย่างไร
คำถามนั้นง่าย: คุณจะโหลด custom UITableViewCellจากไฟล์ Xib ได้อย่างไร การทำเช่นนั้นช่วยให้คุณใช้ตัวสร้างส่วนต่อประสานเพื่อออกแบบเซลล์ของคุณ เห็นได้ชัดว่าคำตอบนั้นไม่ง่ายเนื่องจากปัญหาการจัดการหน่วยความจำ เธรดนี้กล่าวถึงปัญหาและแนะนำวิธีแก้ไข แต่เป็นการนำเสนอ NDA ล่วงหน้าและไม่มีรหัส นี่คือหัวข้อยาวที่กล่าวถึงปัญหาโดยไม่ต้องให้คำตอบที่ชัดเจน นี่คือรหัสที่ฉันใช้: static NSString *CellIdentifier = @"MyCellIdentifier"; MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil]; cell = (MyCell *)[nib objectAtIndex:0]; } ในการใช้รหัสนี้ให้สร้าง MyCell.m / .h ซึ่งเป็นคลาสย่อยใหม่UITableViewCellและเพิ่มIBOutletsสำหรับส่วนประกอบที่คุณต้องการ จากนั้นสร้างไฟล์ …

15
NSLayoutConstraint คืออะไร“ UIView-Encapsulated-Layout-Height” และฉันควรบังคับให้มันคำนวณใหม่อย่างหมดจดอย่างไร
ฉันUITableViewทำงานภายใต้ iOS 8 และฉันใช้ความสูงของเซลล์อัตโนมัติจากข้อ จำกัด ในกระดานเรื่องราว หนึ่งในเซลล์ของฉันมีเซลล์เดียวUITextViewและฉันต้องการให้สัญญาและขยายตามการป้อนข้อมูลของผู้ใช้ - แตะเพื่อย่อ / ขยายข้อความ ฉันกำลังทำสิ่งนี้โดยเพิ่มข้อ จำกัด รันไทม์ลงในมุมมองข้อความและเปลี่ยนค่าคงที่ของข้อ จำกัด เพื่อตอบสนองต่อกิจกรรมของผู้ใช้: -(void)collapse:(BOOL)collapse; { _collapsed = collapse; if(collapse) [_collapsedtextHeightConstraint setConstant: kCollapsedHeight]; // 70.0 else [_collapsedtextHeightConstraint setConstant: [self idealCellHeightToShowFullText]]; [self setNeedsUpdateConstraints]; } เมื่อใดก็ตามที่ฉันทำสิ่งนี้ฉันใส่ไว้ในtableViewอัพเดตและโทร[tableView setNeedsUpdateConstraints]: [tableView beginUpdates]; [_briefCell collapse:!_showFullBriefText]; [tableView setNeedsUpdateConstraints]; // I have also tried // [self.tableView …

30
การเลื่อน UITableView เมื่อเลือกฟิลด์ข้อความ
หลังจากการทดลองและข้อผิดพลาดมากมายฉันยอมแพ้และถามคำถาม ฉันเคยเห็นคนจำนวนมากที่มีปัญหาคล้ายกัน แต่ไม่สามารถหาคำตอบทั้งหมดให้ทำงานได้ ฉันมีUITableViewซึ่งประกอบด้วยเซลล์ที่กำหนดเอง เซลล์ที่ทำจาก 5 ช่องข้อความถัดจากแต่ละอื่น ๆ (เรียงลำดับของเช่นตาราง) เมื่อฉันพยายามเลื่อนและแก้ไขเซลล์ที่ด้านล่างของUITableViewฉันไม่สามารถจัดการเพื่อให้เซลล์ของฉันอยู่ในตำแหน่งที่ถูกต้องเหนือคีย์บอร์ด ฉันได้เห็นคำตอบมากมายที่พูดถึงการเปลี่ยนขนาดมุมมอง ฯลฯ ... แต่ไม่มีคำตอบใดที่ทำงานได้ดีนัก ใครช่วยอธิบายวิธี "ถูกต้อง" ด้วยตัวอย่างรหัสที่เป็นรูปธรรม?

30
ซ่อนบรรทัดตัวแยกในหนึ่ง UITableViewCell
UITableViewผมปรับแต่ง ฉันต้องการซ่อนเส้นคั่นบนเซลล์สุดท้าย ... ฉันจะทำสิ่งนี้ได้ไหม ฉันรู้ว่าฉันสามารถทำได้tableView.separatorStyle = UITableViewCellStyle.Noneแต่นั่นจะมีผลกับเซลล์ทั้งหมดของ tableView ฉันต้องการให้มันมีผลกับเซลล์สุดท้ายของฉันเท่านั้น

20
ปัดเพื่อลบและปุ่ม "เพิ่มเติม" (เช่นในแอปอีเมลบน iOS 7)
วิธีสร้างปุ่ม "เพิ่มเติม" เมื่อผู้ใช้ปัดเซลล์ในมุมมองตาราง (เช่นแอปอีเมลใน iOS 7) ฉันกำลังมองหาข้อมูลนี้ทั้งที่นี่และในฟอรัม Cocoa Touch แต่ฉันไม่สามารถหาคำตอบได้และฉันหวังว่าจะมีคนที่ฉลาดกว่าตัวเองสามารถให้ทางออกฉันได้ ฉันต้องการเมื่อผู้ใช้เลื่อนเซลล์มุมมองตารางเพื่อแสดงปุ่มแก้ไขมากกว่าหนึ่งปุ่ม (ค่าเริ่มต้นคือปุ่มลบ) ในแอปอีเมลสำหรับ iOS 7 คุณสามารถปัดเพื่อลบ แต่มีปุ่ม "เพิ่มเติม" ที่ปรากฏขึ้น

4
วิธีสร้าง NSIndexPath สำหรับ TableView
ฉันต้องการลบแถว 1 ของตารางในฟังก์ชั่นที่ฉันกำหนดไว้ ในการใช้งานdeleteRowAtIndexPathคุณจะต้องใช้IndexPathส่วนและแถวที่กำหนดไว้ ฉันจะสร้างดัชนีพา ธ แบบนี้ได้อย่างไร อาร์เรย์ที่มี int {1} ในฐานะสมาชิกเท่านั้นที่จะผิดพลาด ข้อความ NSLog ระบุว่าจำเป็นต้องกำหนดส่วนด้วย * แก้ไข -> รหัสที่เกี่ยวข้องกับการลบเซลล์: NSIndexPath *myIP = [[NSIndexPath alloc] indexPathForRow:0 inSection:0]; NSArray *myArray = [[NSArray alloc] initWithObjects:myIP, nil]; // [self.tableView beginUpdates]; [self.tableView deleteRowsAtIndexPaths:myArray withRowAnimation:UITableViewRowAnimationFade]; // [self.tableView endUpdates];

9
วิธีปิดการใช้งานการเลื่อนในตาราง UITableView เมื่อเนื้อหาเหมาะสมกับหน้าจอ
ฉันมีตาราง (จัดกลุ่มสไตล์) ไม่กี่ตารางในแอพ iphone ของฉัน (เฉพาะบางส่วนของหน้าจอและเพิ่มด้วยInterface Builderแม้ว่าจะไม่ได้รับการจัดประเภทย่อยUITableViewController) ว่า 80% ของเวลามีขนาดเล็กและจะพอดีกับหน้าจอ เมื่อตารางพอดีกับหน้าจอฉันต้องการปิดใช้งานการเลื่อนเพื่อให้มันสะอาดขึ้นเล็กน้อย แต่ถ้าตารางหลุดออกจากหน้าจอ (เมื่อเพิ่มแถวเข้าไปในภายหลัง) ฉันต้องการเปิดใช้งานการเลื่อนอีกครั้ง (เพราะไม่เช่นนั้นคุณจะไม่เห็นเนื้อหานั้น) มีวิธีทำเช่นนี้หรือไม่? ฉันดูเหมือนจะไม่สามารถคิดออก ฉันรู้ว่าต้องทำ: tableView.scrollEnabled = NO; แต่ฉันไม่แน่ใจว่าที่ไหนหรือถ้าฉันต้องคำนวณขนาดวัตถุตารางหรือบางสิ่งบางอย่างเพื่อให้มันทำงาน อัปเดต : ต่อไปนี้เป็นโซลูชันที่ใช้งานได้ในที่สุดสำหรับฉัน: if (table.contentSize.height < table.frame.size.height) { table.scrollEnabled = NO; } else { table.scrollEnabled = YES; } ฉันเรียกใช้รหัสนี้หลังจากเรียกreloadDataบนโต๊ะและมันคำนวณขนาดที่เหมาะสมและดูเหมือนว่าจะทำงาน table.frame.size.heightคือขนาดที่แท้จริงของวัตถุ (คุณสามารถเห็นสิ่งนี้ในInterface Builder) ปรากฏบนหน้าจอในขณะtable.contentSize.heightที่ความสูงของ: ส่วนหัว, ส่วนท้ายและส่วนสูงของเซลล์ทุกเซลล์เข้าด้วยกัน

9
การตั้งค่าความสูง UITableViewCells ที่กำหนดเอง
ฉันใช้ UITableViewCell ที่กำหนดเองซึ่งมีป้ายกำกับปุ่มและมุมมองรูปภาพที่จะแสดง มีหนึ่งป้ายในเซลล์ที่มีข้อความเป็นNSStringวัตถุและความยาวของสตริงอาจเป็นตัวแปรได้ เนื่องจากนี้ฉันไม่สามารถตั้งค่าความสูงอย่างต่อเนื่องไปยังเซลล์ในส่วนUITableViewของheightForCellAtIndexวิธีการ ความสูงของเซลล์ที่ขึ้นอยู่กับความสูงของป้ายซึ่งสามารถตรวจสอบการใช้NSString's sizeWithFontวิธี ฉันลองใช้มัน แต่ดูเหมือนว่าฉันผิดไปที่ไหนซักแห่ง จะแก้ไขอย่างไร? นี่คือรหัสที่ใช้ในการเริ่มต้นเซลล์ if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier]) { self.selectionStyle = UITableViewCellSelectionStyleNone; UIImage *image = [UIImage imageNamed:@"dot.png"]; imageView = [[UIImageView alloc] initWithImage:image]; imageView.frame = CGRectMake(45.0,10.0,10,10); headingTxt = [[UILabel alloc] initWithFrame: CGRectMake(60.0,0.0,150.0,post_hdg_ht)]; [headingTxt setContentMode: UIViewContentModeCenter]; headingTxt.text = postData.user_f_name; headingTxt.font = [UIFont boldSystemFontOfSize:13]; …

6
ในกระดานเรื่องราวฉันจะสร้างเซลล์แบบกำหนดเองสำหรับใช้กับตัวควบคุมหลายตัวได้อย่างไร
ฉันกำลังพยายามใช้กระดานเรื่องราวในแอปที่ฉันกำลังทำงานอยู่ ในแอพนี้มีรายการและผู้ใช้และแต่ละรายการมีชุดสะสมอื่น ๆ (สมาชิกของรายการรายการที่ผู้ใช้เป็นเจ้าของ) ดังนั้นฉันมีListCellและUserCellชั้นเรียน เป้าหมายคือการให้ผู้ใช้สามารถใช้งานซ้ำได้ทั่วทั้งแอพ (เช่นในตัวควบคุม tableview ของฉัน) นั่นคือสิ่งที่ฉันกำลังประสบปัญหา ฉันจะสร้างเซลล์ tableview ที่กำหนดเองในสตอรี่บอร์ดที่สามารถนำกลับมาใช้ใหม่ได้ในตัวควบคุมมุมมองใด ๆ นี่คือสิ่งเฉพาะที่ฉันได้ลองไปแล้ว ใน Controller # 1 เพิ่มเซลล์ต้นแบบตั้งค่าคลาสเป็นUITableViewCellคลาสย่อยของฉันตั้งค่ารหัสนำมาใช้ใหม่เพิ่มป้ายชื่อและต่อสายเข้ากับช่องเสียบของชั้นเรียน ใน Controller # 2 เพิ่มเซลล์ต้นแบบที่ว่างเปล่าตั้งเป็นคลาสเดียวกันและใช้รหัสซ้ำเหมือนเดิม เมื่อมันทำงานป้ายกำกับจะไม่ปรากฏขึ้นเมื่อมีการแสดงเซลล์ในตัวควบคุม # 2 ทำงานได้ดีใน Controller # 1 ออกแบบแต่ละชนิดของเซลล์ใน NIB ที่แตกต่างกันและต่อสายเข้ากับระดับเซลล์ที่เหมาะสม ในกระดานเรื่องราวเพิ่มเซลล์ต้นแบบที่ว่างเปล่าและตั้งค่าคลาสและใช้รหัสซ้ำเพื่ออ้างอิงถึงชั้นเซลล์ ในviewDidLoadวิธีการของตัวควบคุมให้ลงทะเบียนไฟล์ NIB เหล่านั้นสำหรับรหัสที่ใช้ซ้ำ เมื่อแสดงเซลล์ในตัวควบคุมทั้งสองจะว่างเปล่าเหมือนต้นแบบ เก็บต้นแบบในตัวควบคุมทั้งสองว่างและตั้งค่าคลาสและใช้ id ซ้ำกับคลาสเซลล์ของฉัน สร้าง UI ของเซลล์ทั้งหมดในโค้ด เซลล์ทำงานอย่างสมบูรณ์แบบในตัวควบคุมทั้งหมด ในกรณีที่สองฉันสงสัยว่าต้นแบบจะมีผลเหนือกว่า NIB เสมอและถ้าฉันฆ่าเซลล์ต้นแบบการลงทะเบียน …

18
การตั้งค่าความสูงของแถวเซลล์ที่กำหนดเองในกระดานเรื่องราวไม่ตอบสนอง
ฉันกำลังพยายามปรับความสูงของเซลล์สำหรับหนึ่งในเซลล์ในมุมมองตารางของฉัน ฉันกำลังปรับขนาดจากการตั้งค่า "ความสูงของแถว" ภายใน "ตัวตรวจสอบขนาด" ของเซลล์ที่เป็นปัญหา เมื่อฉันเรียกใช้แอปบน iPhone เซลล์จะมีการตั้งค่าขนาดเริ่มต้นจาก "ขนาดแถว" ในมุมมองตาราง ถ้าฉันเปลี่ยน "ขนาดแถว" ของมุมมองตารางขนาดของเซลล์ทั้งหมดจะเปลี่ยนไป ฉันไม่ต้องการทำเช่นนั้นเพราะฉันต้องการขนาดที่กำหนดเองสำหรับเซลล์เดียวเท่านั้น ฉันเคยเห็นโพสต์มากมายที่มีวิธีแก้ปัญหาแบบเป็นโปรแกรม แต่ฉันต้องการทำผ่านกระดานเรื่องราวถ้าเป็นไปได้

26
ตรวจจับ UIButton ที่ถูกกดใน UITableView
ฉันมีUITableView5 UITableViewCellsข้อ แต่ละเซลล์มีเซลล์UIButtonที่ตั้งค่าไว้ดังนี้: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSString *identifier = @"identifier"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier]; if (cell == nil) { cell = [[UITableView alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]; [cell autorelelase]; UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(10, 5, 40, 20)]; [button addTarget:self action:@selector(buttonPressedAction:) forControlEvents:UIControlEventTouchUpInside]; [button setTag:1]; [cell.contentView addSubview:button]; [button …

24
วิธียกเลิกการเลือกเซลล์ UITableView ที่เลือก
ฉันกำลังทำงานในโครงการที่ฉันต้องเลือกเซลล์ล่วงหน้า ฉันสามารถเลือกเซลล์ที่ใช้ล่วงหน้า-willDisplayCellแต่ไม่สามารถยกเลิกการเลือกเซลล์เมื่อผู้ใช้คลิกที่เซลล์อื่น - (void)tableView:(UITableView*)tableView willDisplayCell:(UITableViewCell*)cell forRowAtIndexPath:(NSIndexPath*)indexPath { AppDelegate_iPad *appDelegte = (AppDelegate_iPad *)[[UIApplication sharedApplication] delegate]; if ([appDelegte.indexPathDelegate row] == [indexPath row]) { [cell setSelected:YES]; } } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { AppDelegate_iPad *appDelegte = (AppDelegate_iPad *)[[UIApplication sharedApplication] delegate]; NSIndexPath *indexpath1 = appDelegte.indexPathDelegate; appDelegte.indexPathDelegate = indexPath; [materialTable deselectRowAtIndexPath:indexpath1 animated:NO]; } คุณช่วยได้ไหม

19
UITapGestureRecognizer แบ่ง UITableView didSelectRowAtIndexPath
ฉันได้เขียนฟังก์ชั่นของตัวเองเพื่อเลื่อนฟิลด์ข้อความเมื่อคีย์บอร์ดปรากฏขึ้น เพื่อที่จะยกเลิกคีย์บอร์ดโดยการแตะออกจากช่องข้อความฉันได้สร้างสิ่งUITapGestureRecognizerที่ดูแลการลาออกจากการตอบกลับครั้งแรกในช่องข้อความเมื่อแตะไป ตอนนี้ฉันได้สร้างการเติมข้อความอัตโนมัติให้กับUITableViewฟิลด์ข้อความที่สร้างฟิลด์ข้อความด้านล่างและเติมด้วยรายการที่ผู้ใช้ป้อนข้อความ อย่างไรก็ตามเมื่อเลือกหนึ่งในรายการในตาราง auto เสร็จแล้วdidSelectRowAtIndexPathจะไม่ถูกเรียก แต่ดูเหมือนว่าตัวจดจำท่าทางแตะกำลังถูกเรียกใช้และเพิ่งลาออกจากการตอบกลับก่อน ฉันเดาว่ามีวิธีที่จะบอกให้รู้จำท่าทางการแตะเพื่อส่งข้อความแตะต่อไปUITableViewเรื่อย ๆ แต่ฉันไม่สามารถเข้าใจได้ว่ามันคืออะไร ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมมาก


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.