2013-12-10 88 views
0

我是新来的Ios编程我想从主视图控制器显示数据到详细视图控制器中,我使用xcode中的主详图模板。详细阵列正在它显示在标签,我想怎么过显示标题,以及存储在_objects阵列的细节,如何将主视图中的数据显示到详细视图控制器

这里是我的代码

#import "MasterViewController.h" 

#import "DetailViewController.h" 

@interface MasterViewController() { 
    NSMutableArray *_detailObjects; 
    NSMutableArray *_thumbnailImage; 
} 
@end 

@implementation MasterViewController 
@synthesize _objects; 

- (void)awakeFromNib 
{ 
    [super awakeFromNib]; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.navigationItem.title= @"Zodiac List"; 

    _objects = [[NSMutableArray alloc] initWithObjects: 
       @"value 1", 
       @"value 2", 
       @"value 3", 
       @"value 4", 
       @"value 5", 
       ,nil]; 
    _detailObjects = [[NSMutableArray alloc] initWithObjects: 
         @"detail of value 1", 
         @"detail of value 2", 
         @"detail of value 3", 
         @"detail of value 4", 
         @"detail of value 5", 
         , nil]; 
    } 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return _objects.count; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; 

    NSDate *object = _objects[indexPath.row]; 
    cell.textLabel.text = [object description]; 
    return cell; 
} 


- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"showDetail"]) { 
     NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
     NSMutableArray *object = _detailObjects[indexPath.row]; 
     [[segue destinationViewController] setDetailItem:object]; 
    } 
} 

@end 

细节做工是否精细如何以往我想在一个标签,以显示值1,值2,值2以及.. 这是我的细节视图控制器代码..

@property (strong, nonatomic) id detailItem; 
@property (strong, nonatomic) id detailItemTitle; 

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

这里是m文件代码

#import "DetailViewController.h" 
#import "MasterViewController.h" 

@interface DetailViewController() 
- (void)configureView; 
@end 

@implementation DetailViewController 
@synthesize zodiacNameLabel; 


#pragma mark - Managing the detail item 

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

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

-(void) setDetailItemTitle:(id)detailItemTitle{ 
    if (_detailItemTitle !=detailItemTitle) { 
     _detailItemTitle = detailItemTitle; 

     [self configureView]; 
    } 
} 

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

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

      MasterViewController *master = [[MasterViewController alloc] init]; 
      zodiacNameLabel.text = [master._objects objectAtIndex:0]; 
    } 

// if (self.detailItemTitle) { 
//  self.zodiacNameLabel.text = [self.detailItem description]; 
// } 
} 

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

// MasterViewController *master = [[MasterViewController alloc] init]; 
// zodiacNameLabel.text = [master._objects objectAtIndex:0]; 

// MasterViewController *master = [[MasterViewController alloc]init]; 
// zodiacNameLabel.text = [master._objects objectAtIndex:0]; // you can get first element of an array 

} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

@end 
+0

您的语法错了 - 在惯例中您不会执行'@synthesize _objects;'。你的初始属性只是'object',当你合成它时,你会'@synthesize object = _object;'并且我们想知道'_object'是什么?请分享您的所有代码。 – Popeye

回答

0

在detailViewController中创建一个“tmpArray”数组,然后可以将_objects数组复制到tmpArray中。这样

MastrerViewController.m

DetailViewController *detail = [[DetailViewController alloc]init]; 
detail.tmpArray = [[NSMutableArray alloc] initWithArray:_objects]; 

DetailViewController.h

@property (nonatomic,retain) NSMutableArray *tmpArray; 
0

实施的tableview这是您的masterviewcontrollerdelegate方法,然后内部的推动无论你想在masterviewcontroller显示数据像这样: -

假设下面的委托在你身边[R masterViewController

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     _yourController = [[yourController alloc] initWithNibName:@"yourController" bundle:[NSBundle mainBundle]]; 

     [self.navigationController pushViewController:_yourController animated:YES]; 

    } 

现在,这将allocinitializeloadnibdetailviewcontroller,如果你想从主细节发送消息,然后申报detailviewcontrollerproperty方法,只是从上面一样,下面通过它: -

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     _yourDetailController = [[yourDetailController alloc] initWithNibName:@"yourDetailController" bundle:[NSBundle mainBundle]]; 
      [_yourDetailController setTempString:@"test"]; //Assuming that tempString is declared in yourDetailController class 
     [self.navigationController pushViewController:_yourDetailController animated:YES]; 

    } 
相关问题