2012-12-06 40 views
1

我想了解如何將UISearchBar添加到TableViewController - 但不是添加到表視圖標題。UISearchBar不在TableViewController的表視圖標題中?

我在現有的搜索欄在某些情況下滾動後消失的問題。我找到了使搜索欄「浮動」的方法,但在幾個角落的情況下,滾動後搜索欄仍然消失。

谷歌搜索這個問題後,我發現有些人已經把表格視圖標題的搜索欄來處理這個問題。如果你的表視圖被添加到UIViewController中,這相對容易。但是,如何向TableViewController添加新視圖(在本例中爲搜索欄) - 這不是TableViewController自動提供的表視圖的子視圖?

iPad應用程序的iOS 6

-Thanks 邁克C.

回答

0

因爲無論從#1,或蘋果開發者論壇上沒人迴應,我在Cocoaheads的愛達荷州分支得到了幫助羅恩·亞當斯。基本上,我最終將我的UITableViewController更改爲UIViewController並手動添加tableview和搜索欄。一些額外的工作,但它很好!

+0

我有同樣的問題(我正在使用UITableViewController)。我將searchBar添加爲tableHeaderView,它不會顯示在ios5中。我會嘗試你的建議。但是,請你讓我知道這兩個實現的主要區別是什麼。 – ravi

1

首先,使用故事板。向表頭添加一個UIView對象。然後,把你的UISearchBar放在UIView中。此外,您需要將您的表格視圖控制器作爲搜索欄的代表。而不是使用scrollViewDidScroll方法(或類似方法),將浮動代碼放入viewDidLayoutSubviews中。這適用於所有情況。我還調用了bringToFront,因爲我使用自定義節標題,並且需要確保表標題視圖始終保持最前端。頂部的UIEdgeInset是tableHeaderView的高度。

viewDidLayoutSubviews { 
    [super viewDidLayoutSubviews]; 
    CGRect frame=self.tableView.tableHeaderView.frame; 
    frame.origin.y=self.tableView.contentOffset.y; 
    if (frame.origin.y <= 0) { 
     frame.origin.y=0; 
     [self.tableView setContentInset:UIEdgeInsetsMake(0.0, 0.0, 0.0, 0.0)]; 
    } else { 
     [self.tableView setContentInset:UIEdgeInsetsMake(48.0, 0.0, 0.0, 0.0)]; 
    } 
    [self.tableView.tableHeaderView setFrame:frame]; 
    [self.tableView bringSubviewToFront:self.tableView.tableHeaderView]; 
} 
相關問題