(我知道之前已经问过这个问题,遗憾的是没有任何相关的StackOverflow答案,我已经看过并尝试解决这个问题,但是对我来说已经有用了。任何帮助都会非常感激。)
我正在构建一个简单的新闻应用。开始屏幕使用Parse的API获取最新的新闻条目。
当您点按菜单按钮时,您会看到过去新闻日的UITableView:
我希望能够将所选Parse表格单元格中的id传递回主视图。
我正在使用ECSlidingViewController作为滑动菜单,并使用各种屏幕的Storyboard:
但是由于我使用ECSlidingViewController的方式,我无法弄清楚如何通过segue传递数据,就像我本来可以的那样,所以我试图通过视图控制器通过自定义传递它初始化。
这是我的MainViewController.h代码:
@interface MainViewController : UIViewController
@property (nonatomic) NSString *detailId;
- (id)initWithDetailId:(NSString*)theId;
@end
这是我在MenuViewController.m中的didSelectRowAtIndexPath
代码:
MainViewController *mainVC = [[MainViewController alloc] initWithDetailId:@"test"];
[self.navigationController pushViewController:mainVC animated:YES];
这是MainViewController.m的initWithDetailId
:
- (id)initWithDetailId:(NSString*)theId
{
NSLog(@"initWithDetailId");
self = [super initWithNibName:nil bundle:nil];
if (self) {
detailId = theId;
}
return self;
}
这是MainViewController.m的viewDidLoad
:
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"detailId equals: %@", self.detailId);
}
但我从NSLog得到的只是“detailId equals:(null)”。我在这做错了什么?谢谢!
答案 0 :(得分:0)
您忘记将self.
放在detailId = theId;
self.detailId = theId;
即
- (id)initWithDetailId:(NSString*)theId
{
NSLog(@"initWithDetailId");
self = [super initWithNibName:nil bundle:nil];
if (self) {
self.detailId = theId;
}
return self;
}
还有另一种方法:
MainViewController *mainVC = [self.storyBoard instantiateViewControllerWithIdentifier:@"yourIdentifier"];
mainVc.detailId=@"test";
[self.navigationController pushViewController:mainVC animated:YES];