2011-10-30 18 views
9

Trong iOS5, sử dụng ARC và các tế bào nguyên mẫu cho tableView trên kịch bản, tôi có thể thay thế mã dưới đây:dequeueReusableCellWithChức năng trình chỉnh sửa đã thay đổi cho các ô mẫu thử nghiệm?

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView 
    dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] 
     initWithStyle:UITableViewCellStyleDefault 
     reuseIdentifier:CellIdentifier]; 
} 

// Configure the cell... 
return cell; 

Với mã đơn giản này ??:

UITableViewCell *cell = [tableView 
    dequeueReusableCellWithIdentifier:@"Cell"]; 
return cell; 

Tôi thấy điều này trên liên kết này:

http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1

Cảm ơn bạn trước!

Arildo

Trả lời

8

Chắc chắn, mã của bạn là đúng, storyboard automaticaly alloc tế bào mới, mã công việc này rất lớn:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    RoadbookCell *cell = (RoadbookCell *)[tableView dequeueReusableCellWithIdentifier:@"RoadbookCell"]; 

    //Configure cell 
    //[cell.lab1 setText:@"Test"]; 

    return cell; 
} 
+1

Tôi không nhận được tại sao, nhưng điều này không hiệu quả với tôi. Tôi tiếp tục nhận được một ô "không". Tôi tạo ra một dự án chi tiết tổng thể mới. Ví dụ hoạt động rất tốt. Khi tôi thêm phương thức cellForRowIndexPath và phương thức kích thước bảng và thiết lập kích thước là 2, tôi nhận được một ngoại lệ, vì dequeueReusableCellWithIdentifier tiếp tục nhận được "nil". – bashan

+1

bạn đã định cấu hình tableCell trong bảng phân cảnh chưa? Như thế này: [link] http://minus.com/m59pfEOqW (lưu ý: số nhận dạng ô là giống nhau trong bảng phân cảnh và trong cellForRowAtIndexPath) – Kappe

+2

Và hãy nhớ rằng bạn nên thực hiện bất kỳ công cụ thiết lập nào trong lớp con của ô trong phương thức "awakeFromNib", không phải "initWithStyle:" (nó không được gọi) vì nó tải từ bảng phân cảnh. – avocade

3

Đây là cách của Apple dự định nó sẽ được sử dụng, nhưng tôi khuyên bạn nên chống lại nó . Có lỗi gây ra dequeueReusableCellWithIdentifier để trả về nil khi VoiceAssist được bật trên thiết bị. Điều đó có nghĩa là ứng dụng của bạn sẽ bị lỗi cho người dùng đã bật tùy chọn này. Đây vẫn là một vấn đề như của iOS 5.1.1

Bạn có thể tìm thêm thông tin và cách giải quyết ở đây:

http://hsoienterprises.com/2012/02/05/uitableview-dequeuereusablecellwithidentifier-storyboard-and-voiceover-doesnt-work/

Đoạn cuối có workaround