我在将2个NSString变量推送到视图控制器之前遇到问题。
这是推送控制器的一些相关代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
CommentsViewController *c = [[CommentsViewController alloc] initWithNibName:@"CommentsView" bundle:nil];
c.subreddit = subreddit;
c.redditId = [[[list objectAtIndex:indexPath.row] objectForKey:@"data"] objectForKey:@"id"];
c.title = [[[list objectAtIndex:indexPath.row] objectForKey:@"data"] objectForKey:@"title"];
[self.navigationController pushViewController:c animated:YES];
[c release];
NSLog(@"subreddit: %@", subreddit);
NSLog(@"redditId: %@", [[[list objectAtIndex:indexPath.row] objectForKey:@"data"] objectForKey:@"id"]);
}
请注意,通过NSLog
打印变量可以正常工作。
此外,c.title
赋值似乎工作正常,因为我可以看到推送控制器上的标题文本。
这里(不只是在这里,任何地方)是我在打印我指定的相应变量时找到(null)
的地方:
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"subreddit: %@", subreddit);
NSLog(@"redditId: %@", redditId);
}
2010-12-30 20:06:17.108 RedditReader[1073:307] subreddit: (null)
2010-12-30 20:06:17.131 RedditReader[1073:307] redditId: (null)
subreddit
将属性设置为:@property (nonatomic, retain) NSString *subreddit;
为什么我似乎无法正确分配这些值,以便我可以在推送的视图控制器中使用它们?
如何分配这些值,以便我可以在推送的视图控制器中使用它们?
答案 0 :(得分:4)
在设置变量之前,似乎你的viewDidLoad
被调用了(我不使用nib文件所以我不能肯定地说......)。您可以创建一个接收这些变量的init
方法,如下所示:
- (id)initWithTitle:(NSString *)aTitle reddit:(NSString *)aReddit ... {
self.title = aTitle;
// ...
if (self = [super initWithNibName:@"CommentsView" bundle:nil]) {
// ...
}
return self;
}
希望这有帮助!
答案 1 :(得分:0)
覆盖viewWillAppear并且你应该看到你的填充变量,从nib统一时调用viewDidLod