- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
今天,我将我的 Xcode 升级到最新版本(版本 5.1 (5B130a))以支持 iOS 7.1。这样做之后,我像往常一样在 Xcode 中运行我的项目。然后应用程序崩溃。在升级 SDK 版本之前,我没有更改任何代码。代码在 iOS 5.x、6.x、7.0.x 中完美运行。
我只是在当前 View Controller 中呈现另一个 View Controller 。它们都是由 Storyboard初始化的。在处理 presentViewController 方法时,它收到一条错误消息“Thread 1: EXC_BAD_ACCESS (code=2, address=0x60)”。我检查了变量,它们都还活着,而不是释放的垃圾。iOS 7.1 有什么问题??
该项目正在使用非 ARC 机制。这是我的代码:
@property (nonatomic, retain) ArticleViewController *articleView;
....
self.articleView = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"ArticleViewController"];
...
[self presentViewController:self.articleView animated:NO completion:^() {
log(@"has shown article page...");
}];
但如果使用 addSubView 函数呈现另一个 View ,则效果很好:
[self.view addSubView:self.articleView.view];
我真的不知道为什么会这样。
最佳答案
我的应用在使用 modalPresentationStyle = UIModalPresentationCustom;
这是我的代码在 iOS 7.0 上的样子:
//Inside my MyPresentedViewController:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
[self setupContent];
}
return self;
}
- (void)setupContent
{
//TransitionManager adopts UIViewControllerTransitioningDelegate and UIViewControllerAnimatedTransitioning
TransitionManager *transitionManager = [[TransitionManager alloc] init];
transitionManager.presenting = YES;
self.modalPresentationStyle = UIModalPresentationCustom;
self.transitioningDelegate = transitionManager;
}
但是,上面的代码在 iOS 7.1 上崩溃了,所以我将实现改为:
@interface MyPresentedViewController
@property (nonatomic, strong) TransitionManager *transitionManager;
@end
...
//Inside my MyPresentedViewController:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
[self setupContent];
}
return self;
}
- (void)setupContent
{
//TransitionManager adopts UIViewControllerTransitioningDelegate and UIViewControllerAnimatedTransitioning
self.transitionManager = [[TransitionManager alloc] init];
_transitionManager.presenting = YES;
self.modalPresentationStyle = UIModalPresentationCustom;
self.transitioningDelegate = _transitionManager;
}
基本上,我没有在 setupContent
方法中声明一个 transitionManager
对象,而是为它创建了一个私有(private)属性(强引用)。
关于ios - 在 iOS 7.1 中处理 presentViewController 方法时应用程序突然崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22369329/
假设我有一个带有 Root View Controller A 的导航 Controller ,我需要呈现一个 View Controller B,我可以使用以下两种方式之一: self.naviga
我正在尝试在 viewDidLoad 中使用 presentViewController:animated:completion: (iOS 7) 以模态方式呈现 View Controller ,但
我以编程方式在 iOS Swift 项目中拥有多个 View Controller 。我没有 Storyboard,如果可能的话,我想避免使用它们。有没有办法切换到另一个 viewcontroller
调用[self presentViewController]在 UIAlertController 的实例上立即加载警报。有没有办法延迟它的呈现? [self presentViewControlle
这个问题在这里已经有了答案: presentViewController and displaying navigation bar (12 个回答) 5年前关闭。 您好,我使用此代码仅使用代码而无需
我有这段代码,用于显示警报: func arraysize() -> [Int]? { let title = "Your file is empty" let message = "
我正在尝试登录 GameCenter 我的应用程序。我收到错误: Value of type 'GameScene' has no member 'presentViewController' whe
我在 iOS 6 中使用过这段代码,我可以在主视图中间呈现另一个 View 。但是,当我在 iOS 7 中运行时,呈现的 View 的原点始终位于 0,0。我该怎么办? rect= CGRectMak
我正在 ios 4.3 中使用 [selfpresentModalViewController:headanimated:NO]; 并寻找 ios5 及更高版本的替代方案。我更喜欢使用适用于所有 iO
我有一个名为 SecondViewController 的 UIViewController,它使用 UIImagePickerController 加载照片库。当我选择一张照片时,它应该显示另一个名
我有一个应用程序,它有一个选项卡栏,它出现在大多数 ViewControllers 中。问题是它没有显示在我通过这段代码呈现的 viewController 中。 UINavigationContro
在我的 swift 应用程序中,我试图让点击按钮切换 View Controller 。这是我正在使用的代码: presentViewController(pythTheoremViewControl
作为我更新我的应用程序以用 presentViewController 替换已弃用的 presentModalViewController 的一部分,我做了一些测试。我的发现令人不安。尽管 prese
我的 iOS 应用程序有一个欢迎屏幕(不要与默认 View 混淆)。 View Controller 使用 NSXMLParser 下载并解析 XML 文件。当它完成它的任务时,它会使一个按钮可见,单
我是 Swift 的新手,为此苦苦挣扎了一段时间。 我正在尝试根据登录状态将用户重定向到“登录” View Controller 或“主页” View Controller 。 “Home”viewc
这是我在这里的第一个问题,所以它可能不是最好的格式。 在我的应用程序中,我想显示下一个屏幕,这个屏幕单独运行时工作正常,所以这里应该没有问题。我正在使用以下代码进行转换 let dataViewCon
我实际上正在与键盘作斗争!我有一个像这样呈现的 viewController : self.present(viewController, animated: true, completion: ni
我用 Storyboard制作了一个单 View 项目,添加了几个 View Controller 。初始 View Controller 有一个简单的按钮来显示另一个 View Controller
我需要用 UIViewAnimationOptionCurveEaseIn 动画呈现 View Controller ,其中源 Controller 从 1 alpha 消失到 0,目标 Contro
我一直在寻找我的问题的解决方案,但其中大部分对我来说都是无用的,因为几乎所有这些都是关于在 IB 中犯下的错误,我没有在这个项目中使用它。重点: 我有一个使用 Unity 生成的 XCode 项目,我
我是一名优秀的程序员,十分优秀!