Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何卸载视图控制器?或者至少让它每次都出现?_Ios_Objective C_Uitableview_Uisplitviewcontroller_Childviewcontroller - Fatal编程技术网

Ios 如何卸载视图控制器?或者至少让它每次都出现?

Ios 如何卸载视图控制器?或者至少让它每次都出现?,ios,objective-c,uitableview,uisplitviewcontroller,childviewcontroller,Ios,Objective C,Uitableview,Uisplitviewcontroller,Childviewcontroller,我想“卸载”视图控制器,这样每当用户在uitableview中单击它们时,它们都会被读取 这是一个带有ChildViewController的uisplitviewcontroller 这怎么可能 -(void)Graviditeten:(int)viewId { UIViewController *viewController; switch (viewId) { case 0: viewController = self.jegKomTil; brea

我想“卸载”视图控制器,这样每当用户在uitableview中单击它们时,它们都会被读取 这是一个带有ChildViewController的uisplitviewcontroller 这怎么可能

-(void)Graviditeten:(int)viewId {
UIViewController *viewController;
switch (viewId) {
    case 0:
        viewController = self.jegKomTil;
        break;
    case 1:
        viewController = self.scannet1;
        break;
    case 2:
        viewController = self.ugeForUge;
        break;
    case 3:
        viewController = self.opfoeselIMave;
        break;
    case 4:
        viewController = self.specielleMinderGravid;
        break;
    case 5:
        viewController = self.nakkefold;
        break;
    case 6:
        viewController = self.mdScan;
        break;
    case 7:
        viewController = self.madMorHave;
        break;
    case 8:
        viewController = self.tingFar;
        break;
}
[self showChildViewController:viewController];
}


-(void)showChildViewController:(UIViewController*)content {
if(topController != content) {
    content.view.frame = [self.view frame];
    [self.view addSubview:content.view];
    [content dismissViewControllerAnimated:YES completion:nil];
    [content didMoveToParentViewController:self];
    [self.presentingViewController dismissViewControllerAnimated:YES completion:nil];

    topController = content;
}
}
到目前为止,我在
ShowChildViewController

[content dismissViewControllerAnimated:YES completion:nil];

但是它没有显示任何内容

听起来你并不是真的想卸载vc的视图,而是想在它即将呈现时刷新它。在显示vc之前,
UISPlitViewController控制器delegate
会收到带有
splitViewController:willShowViewController:invalidatingBarButtonItem
的通知。显示的vc是一个参数。见医生


这管用

你不应该试图解雇一个控制器,如果你没有在第一时间提出它。看起来您正试图使用showChildViewController方法将控制器添加为子控制器(缺少行[self-addChildViewController:content])。您发布的代码是否在容器视图控制器中?@rdelmar是的,它发布在我的容器视图中controller@rdelmar如果我编写了您编写的代码,当我更改用户***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序时,我会得到这个消息,原因:'***-[\uu NSArrayM insertObject:atIndex:]:object不能为nil'@rdelmar-hmm当我向下移动uitableview->another uitableview时,由于某种原因,我的内容变为nil。如果不了解更多有关控制器总体层次结构的信息,很难说出发生了什么。我不太明白你写了什么。但是如果可能的话,我想刷新vc。-(void)splitViewController:(UISplitViewController*)svc将显示ViewController:(UIViewController*)aViewController InvalizatingBarbuttonItem:(UIBarButtonItem*)按钮我在其中放置了什么?除了按钮功能之外,您还可以为SVC分配一个代表。它可以是实现协议的任何对象。一个常见的选择是让第一个vc作为代表。IB是什么?我在用故事板?!?!
-(void)showChildViewController:(UIViewController*)content {
if(topController != content) {
    content.view.frame = [self.view frame];
    [content.view removeFromSuperview];
    [self.view addSubview:content.view];
    [content.view setNeedsDisplay];
    [content didMoveToParentViewController:self];

    topController = content;
}
}