Lỗi xác nhận trong dequeueReabilitiesCellWithIdentifier: for IndexPath:


324

Vì vậy, tôi đã làm một trình đọc rss cho trường của tôi và hoàn thành mã. Tôi đã chạy thử nghiệm và nó đã cho tôi lỗi đó. Đây là đoạn mã mà nó đề cập đến:

- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = 
     [tableView dequeueReusableCellWithIdentifier:CellIdentifier 
                                     forIndexPath:indexPath];
    if (cell == nil) {

        cell = 
         [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle  
                                reuseIdentifier:CellIdentifier];

    }

Đây là lỗi ở đầu ra:

2012/10/04 20: 13: 05,356 đọc [4390: C07] * Assertion thất bại trong - [UITableView dequeueReusableCellWithIdentifier: forIndexPath:], /SourceCache/UIKit_Sim/UIKit-2372/UITableView.m:4460 2012/10/04 20: 13: 05.357 Reader [4390: c07] * Chấm dứt ứng dụng do ngoại lệ chưa được phát hiện 'NSI INTERNalInconsistencyException', lý do: 'không thể hủy bỏ một ô với Cell định danh - phải đăng ký một ngòi hoặc một lớp cho mã định danh hoặc kết nối một ô nguyên mẫu trong bảng phân cảnh ' * Đầu tiên gọi ném stack: (0x1c91012 0x10cee7e 0x1c90e78 0xb64f35 0xc7d14 0x39ff 0xd0f4b 0xd101f 0xb980b 0xca19b 0x6692d 0x10e26b0 0x228dfc0 0x228233c 0x228deaf 0x1058cd 0x4e1a6 0x4ccbf 0x4cbd9 0x4be34 0x4bc6e 0x4ca29 0x4f922 0xf9fec 0x46bc4 0x47311 0x2cf3 0x137b7 0x13da7 0x14fab 0x263 0

và đây là mã nó hiển thị trong màn hình lỗi:

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

xin vui lòng giúp đỡ!


trùng lặp có thể có của Lỗi xác nhận trong UITableViewCont
kiểm soát

Câu trả lời:


488

Bạn đang sử dụng dequeueReusableCellWithIdentifier:forIndexPath:phương pháp. Các tài liệu cho phương pháp đó nói rằng:

Quan trọng: Bạn phải đăng ký một lớp hoặc tệp nib bằng cách sử dụng registerNib:forCellReuseIdentifier:hoặc registerClass:forCellReuseIdentifier:phương thức trước khi gọi phương thức này.

Bạn đã không đăng ký một ngòi hoặc một lớp cho định danh tái sử dụng "Cell".

Nhìn vào mã của bạn, bạn dường như mong đợi phương thức dequeue trở lại nilnếu nó không có ô để cung cấp cho bạn. Bạn cần sử dụng dequeueReusableCellWithIdentifier:cho hành vi đó:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

Lưu ý rằng dequeueReusableCellWithIdentifier:dequeueReusableCellWithIdentifier:forIndexPath:là các phương pháp khác nhau. Xem tài liệu cho cái trướccái sau .

Nếu bạn muốn hiểu lý do tại sao bạn muốn sử dụng dequeueReusableCellWithIdentifier:forIndexPath:, hãy xem phần Hỏi & Đáp này .


166
CHÚA ƠI. Tại sao mẫu mặc định của Xcode cho UITableViewCont kiểm soát tự động cung cấp cho bạn dequeueReabilitiesCellWithIdentifier: forIndexPath:? Thật vô ích.
spstanley

15
Các dequeueReusableCellWithIdentifer:forIndexPath:(giới thiệu trong iOS6) là một cải tiến tốt đẹp, vì bạn không cần phải kiểm tra nếu các tế bào là con số không. (Vì vậy, UITableViewControllerhoạt động tương tự UICollectionView) Nhưng vâng, thật khó chịu khi thay đổi này không nhận xét trong mẫu và thông báo xác nhận / sự cố không hữu ích hơn.
Jason Moore

2
Ít nhất bạn sẽ nghĩ rằng nó sẽ mặc định là UITableViewCell thay vì nổ tung. Baka.
BadPirate

13
Dòng cuối cùng của câu trả lời này là vàng: Tôi đã bị cắn nhiều lần bằng cách sử dụng dequeueReusableCellWithIdentifier:forIndexPath:khi tôi nên sử dụng dequeueReusableCellWithIdentifier:.
ele

Câu trả lời này là hoàn hảo. Tôi có một câu hỏi: Tôi có một trình điều khiển bảngViewContaptor làm trình điều khiển xem ban đầu của mình. Tại didSelectRow ... Tôi đang đẩy một bảngViewControll khác lên ngăn xếp điều hướng. Tại sao tôi chỉ phải đăng ký một ô cho bảngViewControll thứ hai chứ không phải ban đầu?
ArielSD

137

Tôi nghĩ lỗi này là về việc đăng ký ngòi hoặc lớp của bạn cho mã định danh.

Vì vậy, bạn có thể giữ những gì bạn đang làm trong bảngView: hàm cellForRowAtIndexPath và chỉ cần thêm mã dưới đây vào viewDidLoad của bạn:

[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];

Nó làm việc cho tôi. Hy vọng nó có thể giúp.


3
Một vấn đề nhỏ với điều này - đảm bảo rằng định danh tái sử dụng khớp với những gì bạn đã thiết lập trong cài đặt Storyboard của mình cho ô đang đề cập.
James Boutcher

Chỉ để thêm vào điều này trong trường hợp sử dụng hơi khác, tôi đã chọn lại một hàng trong chế độ xem Chính của SplitViewControll của tôi. Điều này chọn lại hàng logic là trong viewDidLoadvà di chuyển logic này để viewDidAppearsửa nó.
Craig Conover

Nó không thể nhập vào ô == nil, Vì vậy, ô xem bảng của tôi luôn luôn không.
Solid Soft

3
swift 3.0: self.tableView.register (UITableViewCell. classForCoder (), forCellReuseIdentifier: "Cell");
norbDEV

68

Mặc dù câu hỏi này khá cũ, nhưng có một khả năng khác: Nếu bạn đang sử dụng Storyboards, bạn chỉ cần đặt CellIdentifier trong Storyboard.

Vì vậy, nếu CellIdentifier của bạn là "Cell", chỉ cần đặt thuộc tính "Định danh": nhập mô tả hình ảnh ở đây

Hãy chắc chắn để làm sạch bản dựng của bạn sau khi làm như vậy. XCode đôi khi có một số vấn đề với các bản cập nhật Storyboard


3
bạn thật tuyệt vời, làm sạch rất nhiều !! : D
Sandy

2
Lưu ý - nếu bạn sử dụng một mã định danh khác ngoài "Ô", bạn cũng sẽ cần thay đổi phương thức cellForRowAtIndexPath để sử dụng mã định danh này trong dòng sau: NSString * CellIdentifier = @ "MyCellIdentifier";
gamozzii

5
Một bổ sung quan trọng như thế này: Quan điểm bảng phải có "nội dung" thiết lập thuộc tính của nó để "Dynamic Nguyên mẫu", KHÔNG "Các tế bào tĩnh"
Ted Avery

Câu trả lời này cần phải đến cao hơn. Rất hữu ích
Sukitha Udugamasooriya

Làm sạch xây dựng là rất cần thiết sau khi cập nhật Identifiertài sản. Cảm ơn!
Crashalot

59

tôi đã có cùng một vấn đề thay thế với

static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

   if (cell==nil) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];

    }

đã giải quyết


Cảm ơn bạn. Điều này chỉ giúp tôi đau đầu. =)
Robert

3
mẹo: nếu bạn sử dụng một - (id) dequeueReabilitiesCellWithIdentifier: forIndexPath : , không cần xác minh nếu ô không. (IOS6>)
seufagner

chỉ cứu tôi đau đầu. =)
Abo3atef

26

Vấn đề là rất có thể vì bạn cấu hình tùy chỉnh UITableViewCelltrong kịch bản nhưng bạn không sử dụng kịch bản để nhanh chóng của bạn UITableViewControllertrong đó sử dụng này UITableViewCell. Ví dụ: trong MainStoryboard, bạn có một UITableViewControllerlớp con được gọi MyTableViewControllervà có một động tùy chỉnh UITableViewCellđược gọi MyTableViewCellvới id định danh "MyCell".

Nếu bạn tạo tùy chỉnh của mình UITableViewControllernhư thế này:

 MyTableViewController *myTableViewController = [[MyTableViewController alloc] init];

Nó sẽ không tự động đăng ký bảngviewcell tùy chỉnh của bạn cho bạn. Bạn phải tự đăng ký nó.

Nhưng nếu bạn sử dụng bảng phân cảnh để khởi tạo MyTableViewController, như thế này:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
MyTableViewController *myTableViewController = [storyboard  instantiateViewControllerWithIdentifier:@"MyTableViewController"];

Điều tốt đẹp xảy ra! UITableViewControllersẽ tự động đăng ký ô xem bảng tùy chỉnh mà bạn xác định trong bảng phân cảnh cho bạn.

Trong phương thức ủy nhiệm của bạn "cellForRowAtIndexPath", bạn có thể tạo cho bạn ô xem bảng như thế này:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"MyCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

//Configure your cell here ...

return cell;
}

dequeueReabilitiesCellWithIdentifier sẽ tự động tạo ô mới cho bạn nếu không có ô có thể tái sử dụng có sẵn trong hàng đợi tái chế.

Vậy là xong!


Mẹo sử dụng instantiateViewControllerWithIdentifierđể khởi tạo viewControll của tôi đã lưu ngày của tôi!
Lei Zhang

đã cứu ngày của tôi: các tế bào nguyên mẫu đã ở trong một VC lân cận với một bảng
Anton Tropashko

Đây là nguyên nhân hợp lý trong trường hợp của tôi.
Nora Alnashwan

19

Tôi sẽ chỉ thêm rằng Xcode 4.5 bao gồm cái mới dequeueReusableCellWithIdentifier:forIndexPath:
trong mã mẫu mặc định của nó - một mã xác thực tiềm năng cho các nhà phát triển mong đợi dequeueReusableCellWithIdentifier:phương thức cũ hơn .


Choáng váng tôi! Bây giờ tôi sẽ biết rõ hơn. ;)
spstanley

18

Trong bảng phân cảnh của bạn, bạn nên đặt 'Định danh' của ô nguyên mẫu của mình giống với "Ô" CellReuseIdentifier của bạn. Sau đó, bạn sẽ không nhận được thông điệp hoặc cần phải gọi đó registerClass: chức năng.


2
Gotcha! Đâu là '100 upvotes'-nút. Đây là giải pháp thực sự.
Jojo.Lechelt

Bạn sẽ nghĩ rằng việc thêm bảng mới vào bảng phân cảnh sẽ cung cấp số nhận dạng mặc định - 'Ô' cho bạn. Thật dễ dàng bị bỏ qua đặc biệt là nếu bạn đang sử dụng cái gọi là 'mã miễn phí' trong bảngView: cellForRowAtIndexPath!
ushika

18

Giải pháp Swift 2.0:

Bạn cần phải đi vào Trình theo dõi thuộc tính của mình và thêm tên cho các ô của bạn Định danh:

nhập mô tả hình ảnh ở đây

Sau đó, bạn cần làm cho số nhận dạng của bạn khớp với dequeue của bạn như thế này:

let cell2 = tableView.dequeueReusableCellWithIdentifier("ButtonCell", forIndexPath: indexPath) as! ButtonCell

Hoặc

Nếu bạn đang làm việc với một ngòi bút, bạn có thể cần phải đăng ký lớp của mình trong cellForRowAtIndexPath:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {       

    tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "SwitchCell")

    // included for context            
    let cell = tableView.dequeueReusableCellWithIdentifier("SwitchCell", forIndexPath:indexPath) as! SwitchCell

    //... continue    
}

Tài liệu tham khảo lớp UITableView của Táo nói:

Trước khi loại bỏ bất kỳ ô nào, hãy gọi phương thức này hoặc phương thức registerNib: forCellReuseIdentifier: để nói cho chế độ xem bảng cách tạo các ô mới. Nếu một ô thuộc loại đã chỉ định hiện không có trong hàng đợi sử dụng lại, thì chế độ xem bảng sẽ sử dụng thông tin được cung cấp để tự động tạo một đối tượng ô mới.

Nếu trước đây bạn đã đăng ký một lớp hoặc tệp nib với cùng một mã định danh tái sử dụng, thì lớp bạn chỉ định trong tham số cellClass thay thế mục nhập cũ. Bạn có thể chỉ định nil cho cellClass nếu bạn muốn hủy đăng ký lớp khỏi định danh tái sử dụng được chỉ định.

Đây là mã từ khung Apples Swift 2.0:

// Beginning in iOS 6, clients can register a nib or class for each cell.
// If all reuse identifiers are registered, use the newer -dequeueReusableCellWithIdentifier:forIndexPath: to guarantee that a cell instance is returned.
// Instances returned from the new dequeue method will also be properly sized when they are returned.

@available(iOS 5.0, *)
func registerNib(nib: UINib?, forCellReuseIdentifier identifier: String)

@available(iOS 6.0, *)
func registerClass(cellClass: AnyClass?, forCellReuseIdentifier identifier: String)

Tôi không hiểu từ đâu SwitchCell.selfđến?
Gert Cuykens

@GertCuykens SwitchCell là UITableViewCell tùy chỉnh của tôi
Dan Beaulieu

1
Tôi đang rời khỏi máy Mac của tôi ngay bây giờ, nhưng tôi chắc chắn có thể cập nhật nó khi tôi về nhà.
Dan Beaulieu

1
Thay thế nó UITableViewCell.selfdường như làm việc cho tôi. Có thể thêm một ghi chú trong câu trả lời
Gert Cuykens

@GertCuykens cảm ơn vì đã chỉ ra rằng, tôi đã thay đổi SwitchCell.elf cho UITableViewCell.elf
Dan Beaulieu

3

Nếu bạn đang sử dụng các ô tĩnh tùy chỉnh, chỉ cần nhận xét phương pháp này:

//- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//    static NSString *CellIdentifier = @"notificationCell";
//    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
//    return cell;
//}

và cung cấp cho các tế bào một mã định danh tại "Thanh tra thuộc tính" trong bảng phân cảnh.


3

Tôi cung cấp cho bạn câu trả lời trong cả Mục tiêu C và Swift. Trước đó tôi muốn nói

Nếu chúng ta sử dụng dequeueReusableCellWithIdentifier:forIndexPath:, chúng ta phải đăng ký một lớp hoặc tệp nib bằng cách sử dụng phương thức registerNib: forCellReuseIdentifier: hoặc registerClass: forCellReuseIdentifier: trước khi gọi phương thức này là Apple Documnetation Says

Vì vậy, chúng tôi thêm registerNib:forCellReuseIdentifier: or registerClass:forCellReuseIdentifier:

Khi chúng tôi đã đăng ký một lớp cho mã định danh được chỉ định và một ô mới phải được tạo, phương thức này sẽ khởi tạo ô bằng cách gọi phương thức initWithStyle: reuseIdentifier: của nó. Đối với các ô dựa trên nib, phương thức này tải đối tượng ô từ tệp nib được cung cấp. Nếu một ô hiện có đã có sẵn để sử dụng lại, phương thức này sẽ gọi phương thức chuẩn bị của phương thức thay thế.

trong phương thức viewDidLoad, chúng ta nên đăng ký ô

Mục tiêu C

LỰA CHỌN 1:

[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];

LỰA CHỌN 2:

[self.tableView registerNib:[UINib nibWithNibName:@"CustomCell" bundle:nil] forCellReuseIdentifier:@"cell"];

trong mã trên nibWithNibName:@"CustomCell" hãy đặt tên ngòi của bạn thay vì tên ngòi của tôi CustomCell

NHANH

LỰA CHỌN 1:

tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")

LỰA CHỌN 2:

tableView.registerNib(UINib(nibName: "NameInput", bundle: nil), forCellReuseIdentifier: "Cell") 

trong mã trên nibName:"NameInput"cho tên ngòi của bạn


3

Làm việc với Swift 3.0:

override func viewDidLoad() {
super.viewDidLoad()

self.myList.register(UINib(nibName: "MyTableViewCell", bundle: nil), forCellReuseIdentifier: "Cell")
}



public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = myList.dequeueReusableCell(withIdentifier: "Cell", for: indexPath as IndexPath) as! MyTableViewCell

return cell
}

2

Tôi đã dành hàng giờ đêm qua để tìm ra lý do tại sao bảng được tạo lập trình của tôi bị sập trên [myTable setDataSource: self]; Bạn có thể bình luận và bật lên một bảng trống, nhưng đã bị sập mỗi lần tôi cố gắng tiếp cận nguồn dữ liệu;

Tôi đã có phái đoàn được thiết lập trong tệp h: @interface myViewControll: UIViewControll

Tôi đã có mã nguồn dữ liệu khi triển khai và vẫn còn BÙM!, Bị sập mỗi lần! CẢM ƠN BẠN đã "xxd" (nr 9): thêm dòng mã đó đã giải quyết nó cho tôi! Trong thực tế, tôi đang khởi chạy một bảng từ nút IBAction, vì vậy đây là mã đầy đủ của tôi:

    - (IBAction)tapButton:(id)sender {

    UIViewController* popoverContent = [[UIViewController alloc]init];

    UIView* popoverView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 300)];
    popoverView.backgroundColor = [UIColor greenColor];
    popoverContent.view = popoverView;

    //Add the table
    UITableView *table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 200, 300)         style:UITableViewStylePlain];

   // NEXT THE LINE THAT SAVED MY SANITY Without it the program built OK, but crashed when      tapping the button!

    [table registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];
    table.delegate=self;
    [table setDataSource:self];
    [popoverView addSubview:table];
    popoverContent.contentSizeForViewInPopover =
    CGSizeMake(200, 300);

    //create a popover controller
    popoverController3 = [[UIPopoverController alloc]
                          initWithContentViewController:popoverContent];
    CGRect popRect = CGRectMake(self.tapButton.frame.origin.x,
                                self.tapButton.frame.origin.y,
                                self.tapButton.frame.size.width,
                                self.tapButton.frame.size.height);


    [popoverController3 presentPopoverFromRect:popRect inView:self.view   permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];



   }


   #Table view data source in same m file

   - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
   {
    NSLog(@"Sections in table");
    // Return the number of sections.
    return 1;
   }

   - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
  {
    NSLog(@"Rows in table");

    // Return the number of rows in the section.
    return myArray.count;
   }

   - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath    *)indexPath
    {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    NSString *myValue;

    //This is just some test array I created:
    myValue=[myArray objectAtIndex:indexPath.row];

    cell.textLabel.text=myValue;
    UIFont *myFont = [ UIFont fontWithName: @"Arial" size: 12.0 ];
    cell.textLabel.font  = myFont;

    return cell;
   }

Nhân tiện: nút phải được liên kết với tư cách là IBAction và là IBOutlet nếu bạn muốn neo popover vào nó.

UIPopoverControll * popoverControll3 được khai báo trực tiếp trong tệp H sau @interface giữa {}


2

FWIW, tôi đã gặp lỗi tương tự khi tôi quên đặt mã định danh ô trong bảng phân cảnh. Nếu đây là vấn đề của bạn thì trong bảng phân cảnh, nhấp vào ô xem bảng và đặt định danh ô trong trình chỉnh sửa thuộc tính. Đảm bảo mã định danh ô bạn đặt ở đây giống như

static NSString *CellIdentifier = @"YourCellIdenifier";

2

Tôi có cùng một vấn đề, đã có cùng một lỗi và đối với tôi nó đã hoạt động như thế này:

[self.tableView registerNib:[UINib nibWithNibName:CELL_NIB_HERE bundle: nil] forCellReuseIdentifier:CELL_IDENTIFIER_HERE];

Có lẽ nó sẽ hữu ích cho người khác.


2

Tôi thiết lập mọi thứ chính xác trong Storyboard và thực hiện một bản dựng sạch nhưng vẫn gặp lỗi " phải đăng ký một ngòi hoặc một lớp cho mã định danh hoặc kết nối một ô nguyên mẫu trong bảng phân cảnh "

[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];

Đã sửa lỗi nhưng tôi vẫn thua lỗ. Tôi không sử dụng 'ô tùy chỉnh', chỉ là chế độ xem với chế độ xem bảng được nhúng. Tôi đã khai báo trình điều khiển khung nhìn là đại biểu và nguồn dữ liệu và đảm bảo mã định danh ô khớp với tệp. những gì đang xảy ra ở đây?


1

Điều này có vẻ ngu ngốc với một số người nhưng nó đã cho tôi. Tôi đã nhận được lỗi này và vấn đề đối với tôi là tôi đã cố gắng sử dụng các ô tĩnh nhưng sau đó tự động thêm nhiều thứ khác. Nếu bạn đang gọi phương thức này, các ô của bạn cần phải là nguyên mẫu động. Chọn ô trong bảng phân cảnh và bên dưới Trình kiểm tra thuộc tính, điều đầu tiên là 'Nội dung' và bạn nên chọn các nguyên mẫu động không tĩnh.


CẢM ƠN BẠN! Đây chính xác là vấn đề của tôi.
Ê-sai Turner

1

Chỉ là phần bổ sung của các câu trả lời: Có thể có lúc bạn đặt tất cả mọi thứ đúng, nhưng bạn có thể vô tình thêm một số UI khác vào bạn .xib, như UIButton: nhập mô tả hình ảnh ở đây Chỉ cần xóa UI thêm, nó sẽ hoạt động.


1

Đảm bảo rằng số nhận dạng CellIdentifier == của ô trong bảng phân cảnh, cả hai tên đều giống nhau. Hy vọng điều này làm việc cho bạn


0

Trong trường hợp của tôi, vụ tai nạn xảy ra khi tôi gọideselectRowAtIndexPath:

Dòng là [tableView deselectRowAtIndexPath:indexPath animated:YES];

Thay đổi nó thành [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; CỐ ĐỊNH VẤN ĐỀ CỦA TÔI!

Hy vọng điều này sẽ giúp bất cứ ai


0

Trong Swift, vấn đề này có thể được giải quyết bằng cách thêm đoạn mã sau vào

viewDidLoad

phương pháp.

tableView.registerClass(UITableViewCell.classForKeyedArchiver(), forCellReuseIdentifier: "your_reuse_identifier")

-1

Đã xảy ra lỗi này, mã định danh sử dụng lại tế bào bc đã sai-- một lỗi tân binh nhưng nó xảy ra: 1. Làm cho trình nhận dạng sử dụng lại tế bào SURE không có lỗi chính tả hoặc thiếu chữ cái. 2. Cùng đường, đừng quên số viết hoa. 3. Số không không phải là "O" (Ohs)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.