2008-09-25 29 views
9

Tôi rất sớm trong quá trình học tập phát triển iPhone. Tôi đang cố gắng để có được đầu của tôi xung quanh miếng khác nhau. Ngay bây giờ tôi đã lấy mẫu NavigationController cơ bản và tôi đang cố gắng tạo một khung nhìn bảng được nhóm lại đơn giản với một vài trường văn bản. Những gì tôi không thể làm là để có được giao diện Builder cho phép tôi thả một UITableViewCell vào một UITableView để tôi có thể sau đó thêm một trường văn bản vào ô. Điều này thậm chí có thể (có vẻ như nó được cho là do thực tế rằng UITableViewCell là một điều khiển có thể kéo được)?Sử dụng Trình tạo giao diện cho UITableViews

Nếu không, điều đó có nghĩa là tất cả những điều đó là mã tôi sẽ cần phải tự viết?

Trả lời

17

Bạn có thể tạo ô bằng Trình tạo giao diện, nhưng bạn phải đặt ô đó thành đối tượng cấp cao nhất thay vì con của chế độ xem bảng. Sau đó, bạn có thể trả về ô này trong bảng điều khiển xem của bạn tableView: cellForRowAtIndexPath: chức năng.

Hãy chắc chắn để cung cấp cho các tế bào một định danh trong Interface Builder và sau đó sử dụng cùng một định danh với dequeueReusableCellWithIdentifier: (xem mã mẫu cho cách làm việc này - ý tưởng là các tế bào được tái sử dụng - các Hệ điều hành sẽ chỉ phân bổ nhiều ô phù hợp trên màn hình cùng một lúc. Cách thông minh để tiết kiệm bộ nhớ.)

1

Thật không may, nó không thực sự hoạt động theo cách đó - các ô trong bảng phân cảnh được tạo bởi đại biểu tại thời gian chạy. Hóa ra đó là mã rất đơn giản. Kiểm tra mã ví dụ về tableview, nó khá dễ làm theo.

6

Hãy cẩn thận với phương pháp Boot To The Head. Bạn sẽ bị rò rỉ nếu bạn không xử lý đúng cách số IBOutlets của mình. Tôi sẽ cố gắng giải thích điều này với khả năng tốt nhất của tôi mà không cần đăng mã (NDA). Nếu bạn định sử dụng IB để tạo ô của mình, hãy tạo UITableViewCell tệp Xib của riêng nó. Đặt Chủ sở hữu tệp làm lớp con UIViewController của bạn (hoặc UITableController). Hãy gọi số IBOutlet giống như UITableViewCell *cellFactory. Trong phương thức UITableViewDataSourcetableView:cellForRowAtIndexPath: thực hiện mã giả sau;

  1. Cố gắng dequeue một tế bào bằng cách sử dụng định danh bạn thiết lập trong IB
  2. Nếu thành công, thực hiện của bạn. Chỉ cần sử dụng ô
  3. Khác bạn cần phải tạo một ô mới. Sử dụng phương pháp [NSBundle mainBundle] loadNibNamed:owner:options: với tệp xib thích hợp của bạn trong đó. Điều này sẽ điền vào ô ivcell của cellFactory với một ô mới. Ở đây có phần khó khăn.
  4. đặt cell = cellFactory sau đó nhả cellFactory và đặt thành 0 để đảm bảo bạn không vô tình sử dụng lại. Bây giờ bạn đã an toàn để sử dụng ô như bình thường
Các vấn đề liên quan