我是iOS编程的新手。我几天都在寻找这些信息,但我仍然没有最好的答案,所以我向你寻求帮助。请不要评论它像“搜索谷歌...”左右。我已经做过这项研究了。
我有一个带有2个控制器的应用程序。首先是ViewController,它是一个简单的TableView。第二个是带导航栏的控制器,上面有两个按钮 - 左边是汉堡,右边是加号。点击汉堡时,首先打开ViewController(带有TableView)。这一切都非常简单,但是加号按钮有问题 - 它应该添加一个新的控制器,它与第二个控制器(相同的按钮,图像等)相同,除了2个标签,必须是不同的。我不知道控制器是否必须是ViewController或NavigationController,因为我想在导航栏上有2个自定义按钮(汉堡,加号)。我发现了一些关于ContainerView的东西,但我不确定,如果它是正确的方式..我想用滑动手势在控制器之间切换。
问题:
每个下一个控制器都有一个“加号”按钮=>它可以成为一个新的控制器。
如何使所有控制器看起来都一样。
我正在添加图片以便更好地理解:IMAGE
答案 0 :(得分:0)
查看您的图像,我将使用的一个简单解决方案是使用UIScrollView,启用分页。
将tableView和第一个视图控制器放在前两页,并确保将视图控制器全部添加到主视图控制器的childViewController中。
点击加号按钮后,展开scrollView,增大内容大小,并向scrollView添加新控制器的视图,并将viewController添加到mainViewController的childViewController,在需要添加新的视图控制器时继续这样做,并记得调用“setContentOffset”#39;滚动到新页面。
由于启用了分页功能,您可以在具有平滑动画的页面之间滑动,这些动画将停留在每个页面上。
至于你的问题,在点击添加按钮时制作相同的视图控制器并添加新的视图控制器,这是第二步。
<强> 1。创建新的视图控制器:
如果您使用的是storyboard,则需要为视图控制器提供标识符,并使用以下命令初始化视图控制器:
UIViewControlller * viewController = [[UIStoryboard storyboardWithName:@&#34; your_story_board_name&#34; bundle:nil] instantiateViewControllerWithIdentifier:@&#34; you_vc_id&#34;];
如果您使用的是xib:
UIViewController * viewController = [[UIViewController alloc] initWithNibName:@&#34; your_xib_file_name&#34;束:无]
如果您使用的是代码,请使用
[UIViewController new]
要创建viewController,它们是使用相同的源创建的,它们看起来肯定是一样的。
<强> 2。要添加视图控制器,请执行下一页: 让我们假设您当前位于第二页,这是您应用的初始状态,第一页是tableView。 如果scrollView的边界具有屏幕大小的大小: size1 ,并且每个页面具有相同的视图大小: size1 ,并且当有两个页面时,内容大小为 size2 ,我们知道
size2.width == size1.width * pages
此时,
size2.width == size1.width * 2
因此,当需要添加新页面时,需要通过size1.width增加内容大小的宽度,并将新的viewController.view框架设置为
(CGRect){(CGPoint){size1.width * page, 0},size1}.
使添加新页面成为常用功能,在添加按钮点击时调用它。
希望有所帮助