-1

主视图控制器.m

#import "DetailViewController.h"

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
    if ([segue.identifier isEqualToString:@"DetailViewControllerSeque"]) {
        DetailViewController *detailView = [segue destinationViewController];

        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

        theList = [app.listArray objectAtIndex:indexPath.row];

        detailView.theList = theList;

        // String to pass to DetailViewController
        detailView.string2pass = @"this is a passing string";
    }
}


DetailViewController.h

NSString *string2pass;

@property (retain, nonatomic) NSString *string2pass;


细节视图控制器.m

NSLog(@"%@", string2pass);

输出:(空)


我做错了什么?

4

4 回答 4

4

除非你在你的实现中有这个,否则它不会像你预期的那样工作。

@synthesize string2pass = string2pass;

..或者您可以通过删除以下行来修复它:

NSString *string2pass;

您的日志正在记录您声明的 string2pass 变量的值。但是还有另一个变量_string2pass。

NSLog(@"%@", string2pass);

如果您没有明确编写 @synthesize 语句,则您声明的 @property 由变量名 _string2pass 支持。不写 @sythesize 语句与声明这样的语句相同:

@synthesize string2pass = _string2pass;
于 2013-09-16T12:46:48.020 回答
0

首先,您需要在文件中添加NSString属性SecondViewController.h

@property (nonatomic, copy) NSString *myString;

然后在FirstViewController.m文件中创建SecondViewController对象并将您想要的任何字符串传递给它:

SecondViewController *secondViewcontroller = [[SecondViewController alloc] initWithNibName:@"ACEViewController" bundle:nil];
secondViewcontroller.myString = @"WhateverYouNeedToPass";

登录字符串SecondViewController

NSLog(@"%@", self.myString);
于 2013-09-16T12:49:30.360 回答
0

self.string2pass中使用NSLog。当我们使用 self. 要访问一个属性,然后调用 getter/setter。

于 2013-09-16T12:48:01.973 回答
0

在您的DetailViewController.h中,您只需要定义这个 -

@property (strong, nonatomic) NSString *string2pass;

在你的DetailViewController.m

@synthesize string2pass 

这对你有用。

于 2013-09-16T12:53:21.533 回答