MasterViewController.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;
的 DetailViewController.m
NSLog(@"%@", string2pass);
输出:( null)
我做错了什么?
答案 0 :(得分:4)
除非您在实施中使用此功能,否则它将无法按预期工作。
@synthesize string2pass = string2pass;
..或者您可以通过删除以下行来修复它:
NSString *string2pass;
您的日志记录了您声明的string2pass变量的值。但是还有另一个变量_string2pass。
NSLog(@"%@", string2pass);
如果未显式编写@synthesize语句,则声明的@property由变量名_string2pass支持。不写@sythesize语句就像声明一样:
@synthesize string2pass = _string2pass;
答案 1 :(得分:0)
在self.string2pass
中使用NSLog
。当我们使用自我时。要访问属性,则调用getter / setter。
答案 2 :(得分: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);
答案 3 :(得分:0)
在 DetailViewController.h 中,只需要定义 -
@property (strong, nonatomic) NSString *string2pass;
在 DetailViewController.m
中@synthesize string2pass
这对你有用。