iOS - 在视图控制器之间传递int

时间:2015-07-03 18:16:48

标签: uitableview model-view-controller nsnotificationcenter didselectrowatindexpath nsnotification

我有一个int pageNumber设置,如@property (nonatomic, assign) int pageNumber;,我试图在两个视图控制器之间传递。

我第一次点击tableview中的单元格时会工作,但如果我再次点击一个单元格,则int不会更新。

有什么想法吗?我的代码如下。

LeftMenuViewController.m

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

    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone"
                                                             bundle: nil];

    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];

    SoftwareCheckViewController *sc = [[SoftwareCheckViewController alloc] init];

    if ([cell.textLabel.text  isEqual: @"S:1 R:0"]) {

        sc = [mainStoryboard instantiateViewControllerWithIdentifier: @"SoftwareCheckViewController"];
        sc.pageNumber = 1;

    }
    else if ([cell.textLabel.text  isEqual: @"S:1 R:1"]) {

        sc = [mainStoryboard instantiateViewControllerWithIdentifier: @"SoftwareCheckViewController"];
        sc.pageNumber = 2;

    }
    else if ([cell.textLabel.text  isEqual: @"S:1 R:2"]) {

        sc = [mainStoryboard instantiateViewControllerWithIdentifier: @"SoftwareCheckViewController"];
        sc.pageNumber = 3;

    }

    [[NSNotificationCenter defaultCenter] postNotificationName:@"pageNumberNotification" object:self];
}

SoftwareCheckViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pageNumberMethod) name:@"pageNumberNotification" object:nil];

}


- (void)pageNumberMethod{

    NSLog(@"pageNumber: %i", pageNumber);

}

1 个答案:

答案 0 :(得分:0)

每次点击单元格时都会创建新的视图控制器,但是您没有对它们执行任何操作。如果sc.pageNumber不是正在侦听通知的控制器,那么设置sc永远不会有效。

此外,即使您想要一个新的控制器,[[SoftwareCheckViewController alloc] init]基本上也是一种浪费,因为您之后会立即为sc指定不同的内容。