2009-02-15 25 views
7

Tôi nghĩ rằng tôi thiếu một cái gì đó đơn giản, nhưng tôi không thể tìm ra chính xác nó là gì.Iphone: TabView + TableView

Tôi đang cố gắng thiết lập Ứng dụng với số UITabViewController và một trong các tab sẽ có UITableView và UISearchBar (nhưng không có Bộ điều khiển điều hướng). Tôi thiết lập UITabViewController với tất cả các tab trong trình tạo giao diện và các chế độ xem nằm trong các tệp xib của riêng chúng. Tệp xib cho tab với UITableView được thiết lập và kết nối như sau.

Stuff trong trình duyệt: chủ sở hữu file của (Class là lớp học của tôi tùy chỉnh mà là con của UITableViewController) view -> Xem

View (class UIView, reference view -> File's owner) contains: 
     UITableView (if i try and set references to the data source/delegate, the app breaks) 
     UISearchBar (unconfigured at the moment) 

thiết lập này sẽ hiển thị tất cả các mục và không bị khóa, nhưng Tôi không thể chỉ định một DataSource mà không có nó crashing khi tôi thử và tải tab với UITableView. Tôi nên làm gì để lấy dữ liệu vào bảng này, bằng IB hoặc mã? Ý tưởng của tôi là như sau:

  1. Thực hiện lớp UITableView tùy chỉnh, nối đến bảng xem trong IB hoặc tùy chỉnh tableviewcontroller trong Xcode.
  2. Đầu đập hoặc máy tính xách tay chống lại tường cho đến khi nó hoạt động.

Cập nhật: Đây là lỗi trình giả lập đẩy vào bảng điều khiển khi tôi kết nối nguồn dữ liệu của Tableview và ủy quyền cho chủ sở hữu tệp (người là lớp tùy chỉnh tableviewcontroller của tôi).

2/14/09 6:59:12 PM TabBarWillbeRight [33.172] * Chấm dứt ứng dụng do ngoại lệ còn tự do 'NSInvalidArgumentException', lý do: '* - [UIViewController tableView: numberOfRowsInSection:]: chọn không được công nhận gửi ví dụ 0x523760

Trả lời

1

Nếu bạn không thể gán DataSource mà không bị lỗi, thì điều đó gợi ý rằng một số phương pháp đại biểu của DataSource chưa được triển khai.

Đặc biệt lớp bạn đang gán là nguồn dữ liệu cần thực hiện UITableViewDataSource

+0

tôi thực hiện numberOfSectionsInTableView, numberOfRowsInSection và cellForRowAtIndexPath, và tất cả họ đều trở lại 1, 1, và một tế bào với static cell.text. Tôi đã bỏ lỡ một phương pháp? –

+0

Không có điều đó. Mặc dù chỉ để được chính xác nó là tableView: numberOfRowsInSection và tableView: cellForRowAtIndexPath –

+0

phải - đó là cách chúng được thiết lập - vì vậy chính xác những gì nên là nguồn dữ liệu của tôi/đại biểu ... tôi đã thử thiết lập nó với setDataSource: và setDelegate quá . Có lẽ tôi thiếu một số thiết lập trong AppDelegate.m? –

0

Bạn có chắc chắn lớp học của bạn thực hiện các lớp học UITableViewDelegate và UITableViewDataSource? Ngoài ra kiểm tra việc khai báo của viewcontroller của bạn. Tệp .h của bạn phải giống như thế này

@interface MyClass:UIViewController <UITableViewDelegate,UITableViewDataSource> 

Mọi thứ khác có vẻ như đã sẵn sàng. Nếu khai báo lớp không chỉ rõ rằng nó thực hiện UITableViewDelegate và DataSource, bạn sẽ nhận được ngoại lệ ngay sau khi bạn thiết lập nguồn dữ liệu.

+0

hmmm - có vẻ như nó có thể là nó. Kể từ đó, tôi đã bỏ qua trình xây dựng giao diện và tạo tất cả các phương thức có liên quan một cách có lập trình. Đạo đức của câu chuyện: hộp đen không vui. –

+0

Thậm chí nếu bạn không sử dụng IB, hãy chắc chắn rằng khai báo lớp học đề cập rằng lớp thực hiện UITableViewDelegate và UITableViewDataSource. – lostInTransit

24

Tôi gặp sự cố tương tự với cùng thông báo lỗi. Giải pháp đơn giản là nhấp vào View trong TabBarController (Hình chữ nhật màu xám có nội dung "view loaded from ..") trong IB và thay đổi lớp của phần tử thành classname của TableViewController.

+1

Ngay tại chỗ! Cảm ơn! –

+0

Làm việc cho tôi. Cảm ơn! – lguy

+0

Làm việc cho tôi, tuyệt vời !!!! : D – tarnfeld

2

Tôi đã gặp vấn đề tương tự. 1. Đảm bảo Chế độ xem của bạn triển khai các phương pháp nguồn dữ liệu 2. Trong IB, hãy đặt Mã nhận dạng lớp để bạn xem lớp thực hiện phương pháp nguồn dữ liệu. 3.Nhấp chuột phải vào khung nhìn trong IB và kiểm tra các nguồn dữ liệu được nối với tập tin Chủ đầu tư, không Xem Hooking up TableView in IB

Các vấn đề liên quan