在两个表视图之间传递数据

Posted

技术标签:

【中文标题】在两个表视图之间传递数据【英文标题】:Passing data between two table views 【发布时间】:2012-06-14 13:58:32 【问题描述】:

我想做的是..我想。

在我的根视图控制器中,我使用一个数组,然后为 RootViewController 填充它并在

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

我这样做的方法:

if (indexPath.row == 0)
    
        self.schedule.title = @"Show1";
        NSLog(@"SCHEDULE CONTROLLER TITLE = %@", schedule.title);
        NSLog(@"FIRST ROW ");
    
    if (indexPath.row == 1) 
        self.schedule.title = @"Show2";
        NSLog(@"SECOND ROW");
    
    if(indexPath.row == 2)
        self.schedule.title = @"Show3";
        NSLog(@"THIRD ROW");
    

    schedule = [[ScheduleViewController alloc] initWithNibName:@"ScheduleViewController" bundle:nil];
    [self.navigationController pushViewController:schedule animated:YES];

schedule 是另一个表视图,所以.. 我正在做的是比较 schedule 的标题来决定 schedule 表视图的内容,但有些它没有获取数据。

这里是ViewDidLoad日程查看方法:

 [super viewDidLoad];

    if ([self.title isEqualToString:@"Show1"])
    
        showSchedule = [[NSArray alloc] initWithObjects:@"SUNDAY",@"MONDAY",@"TUESDAY" , nil];
    
    if ([self.title isEqualToString:@"Show2"])
    
        showSchedule = [[NSArray alloc] initWithObjects:@"WEDNESDAY",@"THURSDAY",@"FRIDAY" , nil];
    else 
        showSchedule = [[NSArray alloc] initWithObjects:@"SATURDAY", nil];
    

    [self.tableView reloadData];

self.title 返回 null,因此它在最后进入 else 循环。 任何想法我在这里做错了什么..?

提前感谢您的宝贵时间

【问题讨论】:

您似乎在创建 schedule 之前设置了 title 属性。 哇...!!感谢您指出菲利普米尔斯。错过这一点真的很愚蠢。 【参考方案1】:

试试这个。

if ([self.title isEqualToString:@"Show1"])
     

替换这一行。

if ([ self.navigationItem.title isEqualToString:@"Show1"])
   

那就试试

【讨论】:

Ayaz: 非常感谢.. 我解决了。在创建计划表视图之前,我错过了使用 self.title 的情况。现在可以正常使用了。【参考方案2】:

在分配视图之前添加标题...

【讨论】:

【参考方案3】:

在分配控制器后设置标题

NSString *titleOfTableVC ;

if (indexPath.row == 0)

    titleOfTableVC = @"Show1";
    NSLog(@"SCHEDULE CONTROLLER TITLE = %@", titleOfTableVC );
    NSLog(@"FIRST ROW ");

if (indexPath.row == 1) 
    titleOfTableVC = @"Show2";
    NSLog(@"SECOND ROW");

if(indexPath.row == 2)
    titleOfTableVC = @"Show3";
    NSLog(@"THIRD ROW");


schedule = [[ScheduleViewController alloc] initWithNibName:@"ScheduleViewController" bundle:nil];
schedule.title =  titleOfTableVC ;    
[self.navigationController pushViewController:schedule animated:YES];

希望你能理解

【讨论】:

阿布舍克:是的。在创建计划表视图之前,我使用了 title 属性。它现在工作正常..!非常感谢..! :)

以上是关于在两个表视图之间传递数据的主要内容,如果未能解决你的问题,请参考以下文章

在两个视图控制器之间传递数据不起作用

在两个视图之间传递数据

无法在表视图和另一个视图控制器之间传递数据

试图在两个视图控制器之间传递数据

如何在由 UITabBarController 分隔的两个视图控制器之间传递数据?

在两个用户控件/视图之间传递数据