如何将整数从 MasterViewController 传递给 DetailViewController? [复制]

Posted

技术标签:

【中文标题】如何将整数从 MasterViewController 传递给 DetailViewController? [复制]【英文标题】:How to pass integer from MasterViewController to DetailViewController? [duplicate] 【发布时间】:2014-04-15 12:46:39 【问题描述】:

我知道这个问题有很多类似的问题和答案,但我没有得到它的工作。我想将 didSelectRowAtIndexPath(在 MasterViewController 中)中的单元格编号传递给 viewDidLoad(在 DetailViewController 中)。这是我所拥有的:

    //MasterViewController.m:
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    

        UITableViewCell *cell=[tableView cellForRowAtIndexPath:indexPath];
        NSInteger num = indexPath.row;//cell.tag;

        DetailViewController *Second  = [[DetailViewController alloc] init];
        Second.number = num;

    

    //DetailViewController.m:
    - (void)viewDidLoad
    

        [super viewDidLoad];

        if(number == 0)

//show something
         else if(number == 1)
    //show something else
            
        [self configureView];
        

我该怎么做?

【问题讨论】:

您不是在推动您在 didSelectCellForIndexPath 中创建的 secondViewController。你只需要做 self.navigationController pushViewController:secondViewController 您的导航代码在哪里? 你只需要 [self.navigationController pushViewController:secondViewController]; 你对每个人都投了反对票这一事实并不成熟。我建议你改变寻求帮助的态度,否则你走不远。 【参考方案1】:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    int num = indexPath.row;//cell.tag;
    DetailViewController *detailVC  = [[DetailViewController alloc] init];
    detailVC.number = num;
    [self.navigationController pushViewController:detailVC animated:YES];

DetailViewController.h

 @property (nonatomic, assign) int number;

DetailViewController.m

 @implementation DetailViewController
 @synthesize number;

 -(void)viewDidLoad:(BOOL)animated
 
    [super viewDidLoad];         
    NSLog(@"Number:= %d",number);
 

希望对你有帮助!!

【讨论】:

上线[super viewDidLoad:animated];我收到错误“UiViewController”没有可见的@interface 声明选择器“viewDidLoad”。这是什么原因造成的? 哦..这是我的错误。写下这一行而不是它。 [超级 viewDidLoad];【参考方案2】:

您的代码在您的 didSelectRowAtIndexPath 方法中创建了一个新的 DetailViewController 实例。因此,当 DetailViewController 的当前实例加载时 - 值将为零。

查看这个 SO 答案以获得更详细的解释:Passing Data between View Controllers

【讨论】:

为什么值为 nil ?它不是子视图 因为您正在 didSelectRowAtIndexPath 方法中创建 DetailViewController 的新实例。当实际的 DetailViewController 从内存中加载时,它与您在 didSelectRowAtIndexPath 中创建的实例不同 - 该实例不再存在。 我认为你完全错了 没问题。祝你好运【参考方案3】:

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

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

        UITableViewCell *cell=[tableView cellForRowAtIndexPath:indexPath];
        NSInteger num = indexPath.row;//cell.tag;

        DetailViewController *Second  = [[DetailViewController alloc] initWithNumber:indexPath.row];

    

DetailViewController.h

@property (nonatomic) int number;
- (id)initWithNumber:(int)number;

DetailViewController.m

- (id)initWithNumber:(int)number

   self.number = number;


- (void)viewDidLoad

   if(number == 0)

    else if(number == 1)

   

   [self configureView];


【讨论】:

以上是关于如何将整数从 MasterViewController 传递给 DetailViewController? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 cin 将整数从控制台读取到向量中

如何将整数从 MasterViewController 传递给 DetailViewController? [复制]

如何将整数从一个活动传递到另一个活动?

如何将整数从 C# 方法复制到本机 C DLL 函数

如何将一维整数数组从 QML 发送到 C++?

Postgres 和 Laravel 如何将列从字符串类型更改为整数?