2013-01-17 76 views
7

我已經使用這篇文章標題:Table Header Views in StoryBoards如何在使用Storyboard時將UITable標題粘到屏幕的頂部?

但我無法在滾動時使標題棒(修復)到屏幕的頂部。

這怎麼能實現?

P.S.表格式很簡單,當我厭倦了超載viewForHeaderInSection和返回的標題視圖出口時,情況變得更糟。

在此先感謝!

+0

你有沒有弄清楚如何用故事板做到這一點,而不是使代碼中的視圖? –

+0

我想通了:http://stackoverflow.com/a/23717919/1438339 –

回答

2

我能做到這一點(至少在iOS 6中)這個樣子,不知道爲什麼這個事情的作品:)

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 

    if(self.headerManualView == nil) { 
     //allocate the view if it doesn't exist yet 
     headerManualView = [[UIView alloc] init]; 

     //create the button 
     UITextField *txtField = [[UITextField alloc] initWithFrame:CGRectMake(10, 3, 250, 44)]; 

     //the button should be as big as a table view cell 
     txtField.borderStyle = UITextBorderStyleRoundedRect; 

     //set action of the button 
     //[txtField addTarget:self action:@selector(removeAction:) forControlEvents:UIControlEventTouchUpInside]; 

     //add the button to the view 
     [headerManualView addSubview:txtField]; 
    } 

    //return the view for the footer 
    return headerManualView; 
} 
9

這裏的,我認爲它可以使頭視圖粘在桌面(不是它的默認行爲)的代碼:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    CGRect rect = self.tableHeaderView.frame; 
    rect.origin.y = MIN(0, self.tableView.contentOffset.y); 
    self.tableHeaderView.frame = rect; 
} 

另一種方法是對第一節頭部視圖。您不能在viewForHeaderInSection處使用任何子視圖,您必須返回尚未處於視圖層次結構中的視圖。該方法的優點是,節標題視圖被設計爲位於桌面上,缺點是您可能想要爲該節中的節標題,這會破壞解決方案。

+0

我試過你的代碼 - 看起來不適合我(我把MAX而不是最小BTW)。奇怪。 – Egor

+0

@Egor它被稱爲? –

+0

當然,我已經在第一個地方檢查過) – Egor

1

我認爲在故事板中使用UIViewController而不是UITableViewController來實現這一點會更好。只需在視圖頂部放置一個標題,並在標題下放置一個UITableView。

+0

我可以訴諸它,但奇怪的是,平常的頭部確實堅持頂部,並且使用故事板中的拖放添加的頭部不會。 – Egor

+0

@Egor tableView標題視圖不會粘在頂端,無論您設置它的方式如何。我不認爲viewController類有什麼不同。如果你把視圖放在tableView上面,它沒有反彈滾動效果,這是不好的。 –

+0

奇怪,因爲它堅持當我用tableView viewForHeaderInSection:(NSInteger)部分 爲此 - 以此爲例http://blog.blackwhale.at/?p=104 – Egor

相關問題