簡體   English   中英

將UIViewController視圖嵌入另一個UIViewController中

[英]Embedding UIViewController view inside another UIViewController

在我的應用程序中,我有一個login-register-forgotpasword線框。 該過程的每個步驟都在單獨的UIViewController實現,它們都在同一個Storyboard ,並且每個控制器之間的過渡都是動態的。 到現在為止還挺好。

現在,我們已經更改了設計,因此所有視圖都具有相同的背景元素和標題(不完全是UINavigationBar ),並且我不喜歡動畫的感覺,而該視圖始終看起來實際上是相同的,但是只是顯示不同的形式。 因此,我正在考慮采用不同的方法,而不是推送整個控制器,而只是顯示/隱藏其視圖,而是保留在同一控制器中。

1)我的第一次嘗試是實例化控制器要顯示的視圖,並將其添加到當前視圖。 就像是。-

- (IBAction)btnRegisterPressed:(id)sender {
    _viewHome.hidden = YES;    
    RegisterController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"registerNewUser"];
    [self.view addSubview:controller.view];
}

這是完美的,因為我為表單使用靜態UITableViews ,據我所知,每個表單都需要一個UITableViewController 但是似乎IBOutletsIBActions壞了。 這種方法有可能嗎? 如果是這樣,這被認為是不好的做法嗎?

2)我的第二個選擇是在一個控制器中創建所有視圖,並正確顯示/隱藏它們。 這將很難維護,而且我不得不忘記靜態的UITableViews

誰能給我一些選擇哪個更好的建議,或者指出我所缺少的其他可能方法?

您的選擇#1不適合書面形式,但接近您可能應該考慮的方法。 您可以添加嵌套不同UIViewController的視圖,但是這樣做時,應使用在“自定義容器管理子視圖控制器”中描述的方法,以便父控制器正確地管理其子控制器。

您可以為同一控制器使用任意數量的表視圖。 委托方法包含觸發方法本身的對象。

按照這種方法(我不建議這樣做),您可以標記表視圖,然后執行以下操作:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{
    if (tableView.tag == 1) {
        doStuff;
    } else if (tableView.tag == 2) {
        doOtherStuff;
    }
}

好吧,就我個人而言,我認為我們應該使事情簡單明了,以使最終用戶能夠迅速掌握您的應用程序。 動畫在其中起着重要的作用。 輕擊表格視圖的單元格將推入另一個表格視圖,並且有不同的UI小部件(如V形符號)指示過渡並且用戶不會感到驚訝。

只要您具有適當的動畫,就可以在單個屏幕上顯示所有內容並根據用戶的動作隱藏/取消隱藏它們。 例如,您可能已經看到TableView部分在點擊時折疊/展開。

您需要進行權衡,然后根據您的應用程序選擇最適合的選擇。 無論您決定我的建議是添加漂亮的動畫,而不是簡單的隱藏/取消隱藏。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM