繁体   English   中英

当detailViewController是动态的时,掌握细节ViewController

[英]Master detail ViewController when detailViewController is dynamic

我正在为iPhone开发一个应用程序,我想使用XCode中的情节提要从tableView中进行简单选择(我们称其为具有几行的主表视图控制器),然后通过导航进入下一页并显示详细视图那个选择。 我在代码中有一个代表我的detailViewController的基类,并且有2-3个该基类的驱动程序类,它们代表我要在第二页中详细显示的视图控制器,有人可以给我一个如何设置目标viewController(detailViewController)的想法。 )使用情节提要基于主视图控制器中的选定行动态地移动到我的子类之一?

通常,您使用segue为您的详细信息视图控制器在故事板中的目标类中分配一个类,但是由于我的目标类可能是不同的(子类),如何在故事板中进行设置?

谢谢你锦

如您所说,您可以处理didSelectRowAtIndexPath方法,并从此处实例化所需的任何视图控制器(而不是将其直接连接到故事板上的单元)。

要手动加载基于情节提要的VC,请确保仍在界面构建器中的情节提要中为VC赋予VC标识符,然后执行以下操作来加载它:

UIStoryboard* storyboard = self.storyboard;

DetailViewController* detailVC = [storyboard instantiateViewControllerWithIdentifier:@ "DetailViewController"];

[self.navigationController pushViewController:detailVC animated:YES];

如果您确实希望使用不同的VC布局,那么对于您的不同子类,您可能希望在情节提要中使用不同的VC。 或设置一个初始化程序,使您可以根据需要进行设置。

有几种方法可以解决此问题:

故事板方法

  • 使用情节提要在主表视图控制器和详细信息视图控制器之间建立关系。 在情节提要中,从MasterTableViewController到其他各种View Controller,您完全可以拥有一个以上的功能。

    `-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    [self performSegueWithIdentifier:@“详细视图标识符”发件人:自我];

    }

  • 确保在情节提要中命名您的故事。

编码方式

  1. 在您的MasterTableViewController内部:

    `-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    MyViewController * vc = [[UIStoryboard storyboardWithName:@“ Main_iPhone”捆绑包:无] InstantiateViewControllerWithIdentifier:@“视图控制器标识符”]]];

    [self presentViewController:vc动画:是完成^ {}];

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM