2013-08-26 19 views
7

Nếu bạn thấy trong ứng dụng danh bạ iPad khi bạn nhấn vào biểu tượng chỉnh sửa "+" để thêm địa chỉ mới, ô không mở rộng sang trái khi biểu tượng biến mất (xem ảnh chụp màn hình thứ nhất bên dưới). Tôi đang cố gắng làm một cái gì đó tương tự nhưng không có may mắn (xem ảnh chụp màn hình thứ 2 bên dưới). Tôi đã thử sử dụng giải pháp được đề xuất here nhưng không hoạt động.cách ngăn không cho chiều rộng ô mở rộng khi chỉnh sửa xong trong UITableView

Để lưu bản ghi, tôi không cố gắng sao chép ứng dụng danh bạ thực tế hoặc tích hợp với danh bạ. Chúng tôi đang làm việc trên một cái gì đó không liên quan và nhà thiết kế của tôi chỉ muốn làm theo mô hình này để làm một số công việc POC để xem những gì tôi có thể làm. EDIT - Một câu hỏi khác, để xác minh suy nghĩ của tôi, là trong ứng dụng danh bạ ở đây những gì đang xảy ra là khi biểu tượng "+" được khai thác, ô này được đặt để không chỉnh sửa nữa, các trường văn bản này sẽ được thêm vào ô, nhãn đã thay đổi và sau đó tải lạiData được gọi, phải không?

EDIT - Cảm ơn gợi ý Tim, tôi gần đến rồi! Tôi đã thực sự làm việc ra 1/2 của nó nhưng sau đó đã được chạy vào vấn đề mà biểu tượng "+" đã không hoạt hình ra, chỉ đột ngột biến mất. Vì vậy, tôi đã thêm reloadRows ... gọi đến commitEditingStyle nhưng bây giờ toàn bộ ô biến mất. Đây là mã của tôi:

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCellEditingStyle editingStyle = UITableViewCellEditingStyleNone; 
    if (self.showEditingIcon) { 
     editingStyle = UITableViewCellEditingStyleInsert; 
     self.showEditingIcon = NO; 
    } 
    return editingStyle; 
} 

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // tableView.editing = NO; 
    // tableView.editing = YES; 
    [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
} 

Bạn có thể nhìn thấy từ dòng nhận xét-out của tôi những gì tôi đã ban đầu, được làm việc nhưng như tôi đã nói, đã không được hiệu ứng động - nút "+" chỉ đột ngột biến mất. Nếu tôi cố gắng gọi [tableView setEditing: NO animated: YES] nó sẽ không hoạt động. Khi tôi cố gắng để đưa những cuộc gọi trong một khối hoạt hình UIView nó đã không nhìn tốt - có thể thấy tế bào tạm thời chuyển sang trái và trở lại. Tuy nhiên bây giờ với cuộc gọi lại, các tế bào biến mất hoàn toàn. Hiện tại, tôi không thực hiện bất kỳ thay đổi nào đối với ô của mình (ví dụ: tôi không thêm các trường văn bản, v.v.) vì tôi chỉ muốn nút "+" hoạt ảnh mà không làm cho ô mở rộng công việc bên trái vào lần lặp đầu tiên.

Bất kỳ trợ giúp nào được đánh giá cao. Cảm ơn.

enter image description here enter image description here

Trả lời

2

Bí quyết là luôn luôn ở trong chế độ chỉnh sửa như vậy mà chư di động vẫn không đổi. Khi các tế bào được nạp, bạn quyết định những gì nhà nước đó là trong và trả lại phong cách chỉnh sửa thích hợp, hoặc là "chèn" phong cách hay "none":

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    BOOL shouldShowInsertButton = ...;//check internal state for cell 
    return shouldShowInsertButton ? UITableViewCellEditingStyleInsert : UITableViewCellEditingStyleNone; 
} 

Sau đó, khi vào nút chỉnh sửa được khai thác, bạn cập nhật nội bộ của bạn nhà nước và tải lại các tế bào:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    ...;//update internal state for cell 
    [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
} 

EDIT

Dưới đây là một sample project làm việc.

+0

Điều này thật tuyệt vời - tôi sắp sửa ở đó, nhưng tôi đang gặp phải một điều gì đó kỳ lạ. Khi tôi sử dụng mã dưới đây, toàn bộ ô của tôi biến mất. Rất tiếc, sẽ chỉnh sửa và bao gồm những gì tôi đang nói trong bài đăng gốc của mình. – fogwolf

+0

Đã thêm dự án mẫu đang hoạt động. Hy vọng rằng sẽ giúp. –

+0

Cảm ơn bạn rất nhiều! Kiểm tra nó ra ngay bây giờ. Trong thời gian chờ đợi, tôi đã thêm bản chỉnh sửa vào bài đăng gốc của mình. – fogwolf