1

在我的应用程序中,我有一个login-register-forgotpasword线框。该过程的每个步骤都在一个单独的 中实现UIViewController,它们都在同一个Storyboard中,并且每个控制器之间的转换都是动画的。到现在为止还挺好。

现在我们改变了设计,所以所有视图都有相同的背景元素和标题(不完全是 a UINavigationBar),我不喜欢动画的感觉总是看起来实际上是一样的,但只是呈现出不同的形态。所以我正在考虑不同的方法,而不是推动整个控制器,只是显示/隐藏它的视图,但保持在同一个控制器中。-

1)我的第一次尝试是实例化我想要显示的视图的控制器,并将其添加到当前视图中。就像是。-

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

这将是完美的,因为我在UITableViews我的表单中使用静态,所以据我所知,我需要UITableViewController一个。但它似乎IBOutletsIBActions打破了。这种方法在某种程度上可行吗?如果是这样,这被认为是一种不好的做法?

2)我的第二个选择是在一个控制器内创建所有视图,并正确显示/隐藏它们。这将很难维护,而且我可能不得不忘记 static UITableViews

谁能给我一些关于哪个选项更好的建议,或者指出我缺少的任何其他可能的方法?

4

3 回答 3

1

您的选项#1 不适合书面但接近您可能应该考虑的方法。您可以添加嵌套不同UIViewControllers 的视图,但是当您这样做时,您应该使用在自定义容器中管理子视图控制器中描述的方法,以便父控制器正确管理其子控制器。

于 2013-11-12T00:42:15.430 回答
1

您可以为同一个控制器使用任意数量的表格视图。委托方法包含触发方法本身的对象。

按照这种方法(我不推荐),您可能可以标记您的表格视图,然后执行以下操作:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{
    if (tableView.tag == 1) {
        doStuff;
    } else if (tableView.tag == 2) {
        doOtherStuff;
    }
}
于 2013-11-12T00:44:16.990 回答
0

好吧,就我个人而言,我觉得我们应该让事情变得简单直接,让最终用户快速融入您的应用程序。动画在其中扮演着重要的角色。点击表格视图的单元格会推送另一个表格视图,并且有不同的 UI 小部件(如 chevron)指示转换,用户并不感到惊讶。

只要您有适当的动画,就可以在单个屏幕上显示所有内容并根据用户的操作隐藏/取消隐藏它们。例如,您可能已经看到 TableView 部分在点击时折叠/展开。

您需要做出权衡,并根据您的应用程序查看最适合的方案。无论您决定我的建议是添加漂亮的动画而不是简单的隐藏/取消隐藏。

于 2013-11-12T00:40:13.797 回答