objective-c - 在 iPad 模拟器上运行但在 iPad 上崩溃

标签 objective-c ios ios4

嗨,我正在尝试在 iPad 上开发一个新应用程序。我正在使用 spitTableView 并向 View 添加 ModalPresentationPage。这在 xcode iPad sim 上完美运行,但在我的 iPad 上崩溃。让您知道我正在使用 xcode 5BATA 并在 iPad 上运行 IOS 5。

这是我的代码

DetailViewController.h

#import <UIKit/UIKit.h>

@interface DetailViewController : UIViewController <UISplitViewControllerDelegate>{

}

-(IBAction)loadView:(id)sender;

@property (strong, nonatomic) id detailItem;

@property (strong, nonatomic) IBOutlet UILabel *detailDescriptionLabel;

@property (strong, nonatomic) IBOutlet UIToolbar *toolbar;

@end

DetailViewController.m

#import "DetailViewController.h"
#import "ModalViewController.h"
#import "RootViewController.h"

@interface DetailViewController ()
@property (strong, nonatomic) UIPopoverController *popoverController;
- (void)configureView;
@end

@implementation DetailViewController


@synthesize detailItem = _detailItem;
@synthesize detailDescriptionLabel = _detailDescriptionLabel;
@synthesize toolbar = _toolbar;
@synthesize popoverController = _myPopoverController;



-(IBAction)loadView:(id)sender{
    ModalViewController *mvc = [[ModalViewController alloc]initWithNibName:@"modalViewController"bundle:nil];
    mvc.modalPresentationStyle = UIModalPresentationPageSheet;
    mvc.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    [self presentModalViewController:mvc animated:YES];
}

- (id)initWithCoder:(NSCoder *)coder
{
    self = [super initWithCoder:coder];
    if (self) {
    }
    return self;
}

#pragma mark - Managing the detail item

- (void)setDetailItem:(id)newDetailItem
{
    if (_detailItem != newDetailItem) {
        _detailItem = newDetailItem;

        // Update the view.
        [self configureView];
    }

    if (self.popoverController != nil) {
        [self.popoverController dismissPopoverAnimated:YES];
    }        
}

- (void)configureView
{
    // Update the user interface for the detail item.

    if (self.detailItem) {
        self.detailDescriptionLabel.text = [self.detailItem description];
    }
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [self configureView];
    self.splitViewController.delegate = self;
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return YES;
}

#pragma mark - Split view

- (void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController: (UIPopoverController *)pc
{
    barButtonItem.title = @"Master";
    NSMutableArray *items = [[self.toolbar items] mutableCopy];
    [items insertObject:barButtonItem atIndex:0];
    [self.toolbar setItems:items animated:YES];
    self.popoverController = pc;
}

- (void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
    // Called when the view is shown again in the split view, invalidating the button and popover controller.
    NSMutableArray *items = [[self.toolbar items] mutableCopy];
    [items removeObjectAtIndex:0];
    [self.toolbar setItems:items animated:YES];
    self.popoverController = nil;
}

@end

最佳答案

不在 NDA 范围内的部件:-

  1. 您在两个 Split View委托(delegate)方法中都泄漏了items
  2. 您确定 XIB 名称是 modalViewController 吗?设备上可能存在区分大小写的问题。

关于objective-c - 在 iPad 模拟器上运行但在 iPad 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6448591/

相关文章:

ios4 - 我的应用程序无法在iOS 5上运行。是否必须从应用程序商店中将其删除?

ios - 何时何地获取 Watch Complication 的数据

ios - 带有来自 plist 的数据的 objective-c 过滤 TableView

ios - 拍照并添加到 UITableView

ios - 为 objective-c 中的不同 View Controller 提供通用功能

ios - 选择单元格后的事件指示器

iOS Swift 如何从分割 View 返回到普通 View Controller

ios - 下面的 UITextChecker 函数无法正常工作

iphone - 有没有新的 api 可以创建像 iBook 这样的功能

ios - 无法从 NSDictionary 获取 int