2012-03-12 29 views
8

Tôi cố gắng để thực hiện điều này:Không thể đặt UISearchBar trong tiêu đề UITableView?

Hãy xem xét một cái nhìn bảng với Thanh tìm kiếm trên xem header.Table nó được làm mới bất cứ khi nào chuỗi được tìm kiếm.

Tôi gặp 2 lớp

TableViewController (UIViewController subclass)

chứa UITableView -đó thấy bảng mà

xem tiêu đề của bảng được tải từ lớp Tiêu đề (lớp con UIToolBar)

.

Tiêu đề (header của UITableView)
-Contains UISearchBar và đại biểu của nó

Các

UISearchBarDelegates gọi lại một hàm trong TableViewController

mà các cuộc gọi

- (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation 

gây App để sụp đổ

Các chức năng gọi stack khung như sau

[UITableView reloadSections:withRowAnimation:] 
[TableViewController functionThatCallsReloadSection] 
[Header searchBarSearchButtonClicked:] 

Các reloadSection gây ra App để sụp đổ ý tưởng Bất cứ lý do tại sao xảy ra của nó như vậy?

Có phải vì chức năng đại biểu vẫn hoạt động trên ngăn xếp trong khi tiêu đề xem bảng được tải lại ??

Tôi không thay đổi bất kỳ điều gì liên quan đến chế độ xem bảng (không thay đổi về số lượng hàng hoặc phần) .Tất cả những gì tôi đang cố làm là tải lại chế độ xem bảng.

được sửa đổi: Tôi cố gắng để làm tất cả những điều này trong iPad, mà cung cấp một popover khi sử dụng UISearchDisplayController mà tôi không muốn use.I đã có một cái nhìn bảng mà tôi muốn làm mới một khi văn bản được nhập vào và tìm kiếm nút được nhấn, bằng cách sử dụng đại biểu tìm kiếm. Vấn đề duy nhất là một khi tôi gọi [UITableView reloadSection:] trong đại biểu tìm kiếm của UISearchBar (UISearchBar nằm trên tiêu đề của UITableView mà tôi muốn tải lại) ứng dụng bị treo.

+0

tôi có nên triển khai thanh tìm kiếm dưới dạng thanh công cụ khác và không phải là tiêu đề của chế độ xem bảng không? – prajul

+0

mặc dù sự cố dosent ứng dụng nếu tôi thực hiện một reloadData thay vì phần tải lại, ứng dụng sẽ sụp đổ khi nó gặp phải một reloadSection cho cùng một bảng một số nơi trong mã – prajul

Trả lời

1

Tôi đã có thể khắc phục sự cố bằng cách sử dụng tableViewHeader thay vì loadind tiêu đề xem bảng bằng cách sử dụng phương thức ủy quyền tiêu đề bảng xem nơi tôi đã sử dụng con trỏ được khởi tạo cho tiêu đề xem bảng.

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