如何将整数从 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? [复制]的主要内容,如果未能解决你的问题,请参考以下文章