我在 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];
}
答案 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