splitviewCotroller中root / tableView的didSelectRowAtIndexpath方法

时间:2011-12-26 13:05:26

标签: iphone uitableview uisplitviewcontroller ipad

  • 我在项目中使用拆分视图控制器,
  • 在拆分视图中我有RootViewCotroller(左), DetaolsViewConroller(右)。
  • 在Root视图控制器中,我有3行。
  • 现在我想在细节视图中看到不同类型的外观,何时 在rootview中选择不同的行。
  • ...
  • 详细信息视图中的
  • 1.选择row1时显示tableView。
  • 2.Dispaly选择row2时的文本字段。
  • 3.从rootviewcontroller中选择row3时的图像视图。
  • ..
  • 我在RootViecontroller中编写了这样的代码,但没有改变 的DetailsView。
  •   -
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

       {
           RightViewController *rightViewController = [[RightViewController alloc] initWithNibName:@"RightViewController"bundle:nil];
           //[self.navigationController pushViewController:rightViewController animated:YES];

           if(indexPath.row == 0)
           {
               UILabel *infoLabel = [[UILabel alloc]initWithFrame:CGRectMake(5, 5, 450, 150)];
               infoLabel.text = @"Customer:Barrick \r\n Mine:gold \r\n Location:USA";
               [rightViewController.view addSubview:infoLabel];

               UITableView *mapTable = [[UITableView alloc]initWithFrame:CGRectMake(165, 5, 450,150)style:UITableViewStyleGrouped];
               [rightViewController.view addSubview:mapTable];
           }

           if(indexPath.row == 1)
           {
               UILabel *infoLabel = [[UILabel alloc]initWithFrame:CGRectMake(5, 5, 450, 150)];
               infoLabel.text = @"Eqipement";
               [rightViewController.view addSubview:infoLabel];
           }


           if(indexPath.row == 2)
           {
             image view..   
           }

           [rightViewController release];
       }
  • 该怎么办..?提前致谢。

2 个答案:

答案 0 :(得分:1)

不要尝试从其他控制器渲染视图。单击该行时,将行的索引值传递给rightView控制器。然后根据rightView控制器中的行值渲染视图。

答案 1 :(得分:1)

您必须将值传递给右视图控制器,您还必须为右视图控制器设置委托。

在左视图控制器中定义右视图控制器,如:

RightViewController *detail;
  /// in implementation of left view contrloller
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
    NSUInteger item = [indexPath row] +1;
    NSNumber *detailItem = [NSNumber numberWithInteger:item];
    self.detailCar.detailItem = detailItem;
}

在rightViewController.h文件中定义:

@property (retain, nonatomic) NSNumber *detailItem;

在RightViewController的实现文件中:

- (void)setDetailItem:(NSNumber *)newDetailItem {
    NSLog(@"ConfigTItem");
    if (_detailItem != newDetailItem) {
        [_detailItem release]; 
        _detailItem = [newDetailItem retain]; 
        [self configureView];
    }
    else {
        [self configureView]; 
    }
}

- (void)configureView {        
    if (self.detailItem) {
        [self viewDidLoad];  // 
        //set your method's and variable whatever you want to do in your view did load or directly here
    }
}