2012-02-08 9 views
0

私は私のsplitviewcontrollerでポップオーバーボタンをクリックしたときに、私はメッセージが表示されます。割り当て解除インスタンスに送信されたメッセージ0x6a66ca0PopoverController - 割り当て解除インスタンス

は、私はすでにこのインスタンスは、私が割り当てdetailviewcontrollerし、initなければならないことが分かりました。ここまでは順調ですね。しかし、すべてが機能していない間に私は問題を見ません。

私はSplitviewを作成するすべてのAppDelegateのファースト:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

    // TestViews for SplitViewController 
    // TestView1 *test1 = [[TestView1 alloc] initWithNibName:@"TestView1" bundle:nil]; 

    // TableView as RootViewController for the Left Hand Pane 
    RootViewTableViewController *rootViewTableViewController = [[RootViewTableViewController alloc] initWithNibName:@"RootViewTableView" bundle:nil]; 
    UINavigationController *rootNavigationController = [[UINavigationController alloc] initWithRootViewController:rootViewTableViewController]; 

    DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:nil]; 
    UINavigationController *detailNavigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController]; 

    self.splitViewController = [[UISplitViewController alloc] init]; 
    self.splitViewController.delegate = detailViewController; 
    self.splitViewController.viewControllers = [NSArray arrayWithObjects:rootNavigationController,detailNavigationController, nil]; 
    self.window.rootViewController = self.splitViewController; 

    [self.window makeKeyAndVisible]; 
    return YES; 
} 

まず私は、コードの行self.splitviewcontroller.delegate = detailviewcontrollerを考えていました。問題になるかもしれない.....しかし、アプリ全体が完璧に起動します。ボタンをクリックしたときにのみ、このprobが表示されます。

RootViewControllerこの(私は明確にするために、標準的なテーブルビューのデリゲートメソッドを省略)

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 

     // Set Title of the TableView for the RootViewController 
     self.title = @"Notarzteinsatzprotokoll"; 
     self.clearsSelectionOnViewWillAppear = NO; 
     self.contentSizeForViewInPopover = CGSizeMake(320.0, 600.0); 
    } 
    NSLog(@"INIT %p", self); 
    return self; 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionMiddle]; 
} 

及び詳細ビューコントローラである:私はここでのポイントプログラムの流れが表示されていない

#pragma mark - 
#pragma mark Managing the Detail Item 

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

     // Update the view 
     [self configureView]; 
    } 

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

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

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


- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [self setTitle:@"Notarzteinsatzprotokoll"]; 
    [self configureView]; 
} 

#pragma mark - 
#pragma mark Rotation Support 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 
    return YES; 
} 


#pragma mark - 
#pragma mark SplitView 

- (void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)pc { 
    barButtonItem.title = @"Master"; 
    [self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES]; 
    self.rootPopoverController = pc; 
} 

- (void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem { 
    [self.navigationItem setLeftBarButtonItem:nil animated:YES]; 
    self.rootPopoverController = nil; 
} 

detailviewcontrollerオブジェクトが解放され、何か他のものがメッセージを送信しようとします...私はいくつかのコード行を交換する必要がありますか?

ありがとうございました! は、セバスチャンは

@end 
+0

各関連するコード行にブレークポイントを置き、エラーメッセージの原因となるコードの正確な部分を特定することをお勧めします。そして、あなたがその領域を見つけたら、その線を通り、あなたの問題の正確な原因を見つけてください。私はあなたがあなたの問題の正しい目的に終わると確信しています。適切に対処してください。問題が解決しました。 –

答えて

0

エラーが割り当て解除インスタンスに送信されているものをメッセージを伝える必要があります。問題が何であるか正確にはわからない、setTitle:メッセージが左のバーボタンアイテムに送信されていますか?

splitViewController:willShowViewController:左のボタンのボタン項目をnil(これを無効にする)に設定し、splitViewController:willHideViewController:タイトルを変更しようとしましたが、これは問題の可能性があります。

+0

うーん...私はそれがsplitViewデリゲートメッセージであるとは思わない...彼らは、デバイスのローテーションに応じて次々と呼び出されるだけなので。私はそれをゼロにするか、ビルドする必要があります。 – konturgestaltung

関連する問題