1

私の問題-DetailViewのTableViewから情報を渡したいのですが、self.detailViewController.detailItemのどこかに値が渡されません。

あれは:

self.detailViewController.detailItem =@"123";

NSString *sss = self.detailViewController.detailItem;

NSLog(@"%@",  sss);

NSLog出力(null)

これが私のソースコードです:

DetailViewController.h

#import <UIKit/UIKit.h>

@interface DetailViewController : UIViewController <UISplitViewControllerDelegate>

@property id detailItem;
@property id TitleOfDetail;

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

@end

DetailViewController.m

#import "DetailViewController.h"

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

@implementation DetailViewController




#pragma mark - Managing the detail item


-(void)setTitleOfDetail:(id)newTitleOfDetail {

    NSLog(@"123");

    if (_TitleOfDetail != newTitleOfDetail) {
        _TitleOfDetail = newTitleOfDetail;
        // Update the view.
        [self configureView];
    }
}


-(void)setDetailItem:(id)newDetailItem
{
    NSLog(@"123");

    if (_detailItem != newDetailItem) {
        _detailItem = newDetailItem;

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

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

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

    NSLog(@"1%@", self.TitleOfDetail);
    NSLog(@"2%@", [self.detailItem description]);

    if (self.TitleOfDetail) {
        self.title = self.TitleOfDetail;
    }


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

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

myclass.h

@class DetailViewController;

@interface myclass : UITableViewController 

@property DetailViewController *detailViewController;

@end

myclass.m

#import "choiseAvtoController.h"
#import "DetailViewController.h"

@interface myclass ()
@end

@implementation myclass

@synthesize detailViewController;

…

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    self.detailViewController.detailItem =@"123";

NSString *sss = self.detailViewController.detailItem;

NSLog(@"%@",  sss);
}

何が問題で、どのように修正するのですか?

PS私の英語は申し訳ありませんが、私はただ学んでいます))

4

1 に答える 1

1

ストーリーボードを使用しているので、セグエで詳細コントローラーを開く必要があります。

ストーリーボードでセグエ識別子(たとえば、OpenDetail)を検索し、次のコードを最初のコントローラーに追加します。

-(void)prepareForSegue:(UIStoryboardPopoverSegue*)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"OpenDetail"]) {
        DetailViewController *dest = segue.destinationViewController;
        dest.detailItem =@"123";
    }
}
于 2012-12-09T20:32:07.290 に答える