-1

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

现在,无论何时单击 Category,相关数据都会显示在 SubCategory 表中。现在,如果我单击“标识平面和实心图形”之类的子类别数据,则该单元格标签文本应传递给下一个 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];

  }
4

3 回答 3

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...

  }

这是在视图控制器之间传递数据的很好的解释

于 2013-10-04T10:24:29.153 回答
0

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

于 2013-10-04T09:49:26.813 回答
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;
}

在您的视图控制器中进行此更改并分配初始化您使用此方法查看控制器并传递 localStr (例如)。您可以在视图控制器中使用 setString

于 2013-10-04T09:54:05.440 回答