我是开发者在iPad上的首发,我想做一个拆分视图。 我有一个左侧菜单(如标签栏但垂直位于左侧),标题(所有视图已经相同)和屏幕中央的容器以及一些数据......
我正在使用故事板(也是初学者)。
应用程序的结构看起来像一个网页。在故事板中,我使用了3个容器:
问题是:如何使用与我的项目菜单对应的数据刷新主容器?
示例:
...
你知道我的意思吗?这是我的故事板结构:
谢谢大家的建议和解释,我实际上真的输了。
更新1:
我试过,但我知道一些我知道的问题: 首先,这是我的AppDelegate方法didFinishLaunchingWithOptions:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
self.mainViewController = [[MainContainerViewController alloc] init]; // MainContainer which can be refreshed with some other viewControllers...
self.dashboardController = [[DashboardViewController alloc] init]; // The first viewController to load in the mainViewController
[self setDetailViewController:self.dashboardController]; // Method to set the viewController I want to load in the mainViewController
[self setup];
return YES;
}
设置de viewController的方法:
- (void)setDetailViewController:(id)controller
{
self.mainViewController = controller;
}
我在我的故事板中设置了一个viewController,它是一个MainViewController类(主容器...)和一个viewController,它是一个DashboardViewController类。 当app启动时,我的DashboardViewController的viewDidLoad方法没有被调用,只有init方法,为什么?
这是我的故事板的样子:
谢谢你的帮助! ;)
答案 0 :(得分:0)
在menuViewController文件中,您当然会包含您的表格 所有菜单项,选中后将调用一个类似于此的方法
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *methodToCall = [[[[self.menuTitles objectAtIndex:indexPath.section] valueForKey:@"RowTitles"] objectAtIndex:indexPath.row] valueForKey:@"method"];
if([methodToCall length] > 0){
SEL s = NSSelectorFromString(methodToCall);
[self performSelector:s];
}
}
我刚将所有菜单标题及其方法名称存储在NSMutableDictionary中,并调用其相应的选择器。或者你可以做一个简单的if else语句,
if(indexPath.row == 0){
[self loadNewScreenOnMainController];
}
在那个选择器中我做了这样的事情:
-(void)loadNewScreenOnMainController{
ProductsVC *productsVC = [[ProductsVC alloc] init];
UINavigationController *productsNav = [[UINavigationController alloc] initWithRootViewController:productsVC];
[[AppDelegate appDelegate] setDetailViewController:productsNav];
}
}
我们的想法是在你的app委托中调用一个方法,该方法将从侧面菜单视图控制器切换带有视图控制器的mainViewcontroller
然后在你的`appDelegate.m文件中你将得到一个如下所示的方法:
-(void)setDetailViewController:(id)newController{
mainViewController = newController;
}
查看Matt gemmett's splitviewcontroller example,他使用相同的方法将一个新的视图控制器从sidemenuViewcontroller切换到主视图控制器