gpt4 book ai didi

iphone - 无法让presentViewController 工作

转载 作者:行者123 更新时间:2023-12-03 18:14:27 28 4
gpt4 key购买 nike

我将一个工作 View Controller 类从另一个项目复制到一个新项目中。我无法在新项目中加载 View 。在旧项目中我使用了presentModalViewController。在新版本中,我无法使用presentModalViewController或presentViewController加载 View

我正在尝试从主视图 Controller 加载当前 View 。

这是我的主视图 Controller 界面的样子...

//  ViewController.h
#import <UIKit/UIKit.h>
#import "RequestDialogViewController.h"

@interface ViewController : UIViewController <RequestDialogViewControllerDelegate> {

}

- (void)requestDialogViewDidDismiss:(RequestDialogViewController *)controller withResponse:(NSString*)response;

我正在像这样使用presentModalViewController...

RequestDialogViewController *requestIPViewController = [[RequestDialogViewController alloc] initWithNibName:@"RequestDialogViewController"  bundle:nil];
navigationController = [[UINavigationController alloc] initWithRootViewController:requestIPViewController];
[self presentModalViewController:navigationController animated:YES];

像这样呈现ViewController...

RequestDialogViewController *requestIPViewController = [[RequestDialogViewController alloc] initWithNibName:@"RequestDialogViewController"  bundle:nil];    
[self presentViewController:requestIPViewController animated:YES completion:nil];

我在新项目中缺少什么? init 方法会触发,但 viewDidLoad 不会触发,并且不会显示任何内容。

谢谢

最佳答案

如果 ViewController 是 Root View Controller ,它无法从自己的 viewDidLoad 中呈现模态视图 Controller ,因为此时它没有信息比如屏幕尺寸。

如果其他 View Controller 已经显示,这将起作用。如果 Root View Controller 是 UINavigationController,您将看到一个 View 从右侧滑入,而模态视图从底部向上滑动。

无论如何,对于您的ViewController,您最快可以在它变得可见之后呈现它。为此使用计时器是不可靠的;较旧且速度较慢的设备的加载时间显着延长。

为了提高可靠性,请为 ViewController 实现 viewDidAppear:。仍然使用您的计时器系统来添加额外的延迟;不到一秒就足够了。尽管在 iOS 5.1 模拟器中从 viewDidAppear 中呈现模态视图 Controller 对我来说很有效,Presenting a modal view controller when loading another ViewController说有时不会发生。

关于iphone - 无法让presentViewController 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10147625/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com