2012-12-24 82 views
1

我想一個子視圖爲了有一個子視圖當UITableView的滾動不動添加到一個UITableView的父視圖。 當我子視圖添加到它的UITableView與移動用戶滾動動作表。添加子視圖的UITableView的父視圖

到目前爲止,我的情況是,我有一個的UITabBarController 3個UINavigationControllers。 每個都有一個UITableViewController。 我想添加一個子視圖到各個控制器的屏幕上。不過,我不希望新的子視圖將被添加到這樣整個應用:

[[[UIApplication sharedApplication] keyWindow] addSubview:newView]; 

當我推一個新的控制器到堆棧或彈出一個,我想子視圖移動和隨着UITableView的消失而消失。保持當用戶滾動的UITableView,新子視圖坐在其不移動位置的事實。 從而使的UITableView和新子視圖都在同一水平上。

感謝

回答

1

一對夫婦的方法:

首先,將視圖添加到停留當用戶滾動,如果表中只有一個部分,你可以爲部分添加頁眉表格視圖。例如,這增加了一個普通的藍色UIView爲標題的實現代碼如下:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.view.bounds.size.width, 50)]; 
    view.backgroundColor = [UIColor blueColor]; 
    return view; 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
{ 
    return 50; 
} 

第二,如果你有一個以上的部分,不過,這招不起作用,你會希望使用UIViewController而不是UITableViewController,將您的標題添加到該控制器視圖的頂部,並將tableview添加到該視圖的底部。你要確保你設置了(A)的IBOutlet的實現代碼如下(通常以一個名爲tableView,爲了避免混淆屬性);和(b)指定視圖控制器作爲這個tableview的數據源和委託。第三,如果你希望這個頭文件出現在應用程序的每個場景中,另一種方法(在iOS5 +應用程序中)是使用視圖控制器遏制,創建一個包含頭文件的容器視圖,然後添加你的應用程序的第一個場景作爲該視圖容器的子視圖。這並不難,但如果你是一位新開發人員,我可能會阻止你嘗試這種方式。我已經做到了,它運作良好,但並非適用於所有人。第四,如果您的應用程序使用的是導航控制器,則可以自定義導航欄來呈現您的自定義外觀。這一切都取決於你想用頭來完成什麼。

+0

第三個選擇是最有幫助的。儘管這很棘手。它以完美的方式完成工作。 – hishamaus

1

添加您的子視圖的實現代碼如下..

實現委託方法scrollViewDidScroll。 在scrollViewDidScroll上,只需設置所需的子視圖所需的中心。

相關問題