1

(我知道以前有人问过这个问题,不幸的是,我在试图解决这个问题时查看并尝试过的所有相关 StackOverflow 答案都没有对我有用。任何帮助将不胜感激。)

我正在构建一个简单的新闻应用程序。打开屏幕使用 Parse 的 API 抓取最新的新闻条目。

第一个屏幕

当你点击菜单按钮时,你会得到过去新闻日的 UITableView:

滑动菜单

我希望能够将所选 Parse 表格单元格中的 id 传递回主视图。

我将 ECSlidingViewController 用于滑动菜单,将 Storyboard 用于各种屏幕:

故事板

但是由于我使用 ECSlidingViewController 的方式,我无法弄清楚如何通过 segues 传递数据,因为我本来可以这样做,所以我试图通过带有自定义 init 的视图控制器传递它。

这是我的 MainViewController.h 代码:

@interface MainViewController : UIViewController

@property (nonatomic) NSString *detailId;

- (id)initWithDetailId:(NSString*)theId;

@end

这是我didSelectRowAtIndexPath在 MenuViewController.m 中的代码:

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 等于:(null)”。我在这里做错了什么?谢谢!

4

1 回答 1

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];
于 2013-02-10T06:24:16.750 回答