如何在两个ViewControllers之间传递数据,其中第一个VC有两个tableViews,第二个tableView选择的数据应该传递给第二个VC?

时间:2013-10-04 09:32:56

标签: ios objective-c uitableview

我在 ViewController 中有两个tableView。我想将第二个tableView数据传递给第二个ViewController。

现在每当点击Category时,相关数据都会显示在SubCategory表中。现在,如果我点击SubCategory数据,如“Identity planar and solid figures”,那么该单元格标签文本应该传递给下一个viewController。我可以传递数据,但每当点击第二个表格单元格时,就不会进入下一个ViewController。问题是我无法通过传递数据进入下一个视图。 我在“ DidSelectRowAtIndexPath ”方法中遇到问题。 请帮我解决这个问题并将代码发给我。

我的代码

-(void)viewDidLoad

{


NSMutableArray *Mute_Category=[[NSMutableArray alloc]initWithObjects:@"Geometry", @"Mixed operations", nil];

NSMutableArray *Mute_Sub_Category=[[NSMutableArray alloc]initWithObjects:@"Identify planar and solid figures", @"Open and closed shapes and qualities of polygons", @"Nets of 3-dimensional figures", @"Types of angles", nil];

tag=1;

[table_category reloadData];

}

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;
{

    return 1;

}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
{

    if (tag==1)
    {
        return [Mute_category count];
    }
    else
    {
        return [Mute_Sub_Category count];
    }

}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{

    cell=[[UITableViewCell alloc]init];

    if (tag==1)
    {
        cell.textLabel.text=[Mute_category objectAtIndex:indexPath.row];
    }
    else
    {
        cell.textLabel.text=[Mute_Sub_Category objectAtIndex:indexPath.row];
    }

    return cell;


}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
{

        NSString *localStr=[Mute_category objectAtIndex:indexPath.row];

        tag=2;

        [table_sub_category reloadData];

  }

3 个答案:

答案 0 :(得分:1)

您可以使用属性访问其他类中的数据:

@interface YourSecondView : UIViewController {
}

@property (nonatomic, retain) NSString* dataString;

请勿忘记@synthesize

上的YourSecondView.m

在表视图控制器中,您可以传递类似

的数据
 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;

{

       YourSecondView * SV = [[YourSecondView alloc]init];
       sv.dataString = [Mute_category objectAtIndex:indexPath.row];

       // here write what you want to do next...

  }

Here is good explination for passing data between view controllers

答案 1 :(得分:0)

由于您有两个表视图,因此您应该使用tableView方法中的tableView:didSelectRowAtIndexPath:参数来选择要传递的正确信息。

答案 2 :(得分:0)

试试这个:

if (tableView.tag==YOUR TAG)// Give the tag of table for which your need to push view controller
{
    NSString *localStr=[Mute_category objectAtIndex:indexPath.row];

YourViewController *obj =[[YourViewController alloc]initWithNibName:@"YourViewController" bundle:nil];
}

如果要将数据传递给其他视图控制器,可以使用以下代码

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

在viewcontroller中进行此更改,并使用此方法为init视图控制器并传递localStr(例如)。您可以在视图控制器中使用setString