相关疑难解决方法(0)

如何从UINavigationController弹出视图并在一次操作中将其替换为另一个视图?

我有一个应用程序,我需要从UINavigationController的堆栈中删除一个视图,并将其替换为另一个.情况是第一个视图创建一个可编辑的项目,然后用该项目的编辑器替换它自己.当我在第一个视图中执行明显的解决方案时:

MyEditViewController *mevc = [[MYEditViewController alloc] initWithGizmo: gizmo];

[self retain];
[self.navigationController popViewControllerAnimated: NO];
[self.navigationController pushViewController: mevc animated: YES];
[self release];
Run Code Online (Sandbox Code Playgroud)

我的行为非常奇怪.通常编辑器视图会出现,但如果我尝试使用导航栏上的后退按钮,我会得到额外的屏幕,有些空白,有些只是搞砸了.标题也变得随机.就像导航堆栈完全被冲洗一样.

什么是解决这个问题的更好方法?

谢谢,马特

iphone cocoa-touch uinavigationcontroller uiviewanimation

83
推荐指数
5
解决办法
8万
查看次数

在同一操作中弹出和推送视图控制器

可以从导航堆栈中弹出一个视图,然后再将其直接推到它上面吗?

我正在尝试为这一部分实现一个平面层次结构,并希望有一个分段控制器,但我不能让分段控制器看起来像我想要的任何东西,因此我为什么要尝试使用导航控制器.

单击按钮时,我执行了以下代码:

[[self navigationController] popViewControllerAnimated:YES];
        MapsViewController *aViewController = [[MapsViewController alloc]
                                               initWithNibName:@"MapsViewController" bundle:nil];
[self.navigationController pushViewController:aViewController animated:NO];
[aViewController release];
Run Code Online (Sandbox Code Playgroud)

它突然出现,但没有任何推动的迹象!任何帮助,将不胜感激.

uinavigationcontroller popviewcontroller pushviewcontroller ios

37
推荐指数
5
解决办法
4万
查看次数

如何弹出viewController,然后通过委托推送viewController

我有一个UITableViewController,当按下一个单元格时,我希望控制器弹出自己,然后将控制器弹出,将另一个视图控制器推入堆栈.

我正在调用此方法,因为popped-to viewController是tableViewController的委托

我目前正在调用此方法并延迟它,因为否则,一切都搞砸了等待动画结束.这样做似乎有点hacky,在我看来,如果有人的设备没有在我给出的分配的等待时间内弹出视图,它会失败.

以下是一些代码:

//**** code in my tableViewController ***//

[self.navigationController popViewControllerAnimated:YES];
[self.delegate cellPressedInTableViewControllerWithCalculationsModel:(id)anArgmentMyDelegateMethodTakes];



// **** Code in the viewController being popped to ****//
//CalculationsViewController is a subclass of UIViewController
CalculationsViewController *calcViewController = [[CalculationsViewController alloc] init];

//some customization code would go her

[self.navigationController performSelector:@selector(pushViewController:animated:) withObject:calcViewController afterDelay:0.75];
//this seems like the arbitrary part, the 0.75 second delay.

[calcViewController release];
Run Code Online (Sandbox Code Playgroud)

似乎应该有更好的方法来弹出/推送将在动画结束后执行的委托.在我看来,等待时间可能会导致意外问题.

我也试过用:

 performSelectorOnMainThread:withObject:waitUntilDone
Run Code Online (Sandbox Code Playgroud)

但代码只是立即执行,视图层次结构搞砸了.

我也看过这个问题: 代表团问题 ,它让我这么做,但我很想知道是否有更好的方法来执行这样的任务,谢谢.

编辑:我也尝试在NSInvocation的实例中包装该方法,我无法让它协调方法调用,直到动画完成后没有任意设置延迟

iphone objective-c ios

8
推荐指数
2
解决办法
7560
查看次数