1

.m 文件,我试图从中设置message变量:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    SingleMessageViewController* vc = (SingleMessageViewController*)[self.storyboard instantiateViewControllerWithIdentifier:@"SingleMessageViewController"];
    vc.message = [tableView cellForRowAtIndexPath:indexPath].textLabel.text;
    [self.navigationController pushViewController:vc animated:true];
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

我正在实例化的视图控制器的 .h 文件:

@interface SingleMessageViewController : POSCommonViewController
{
    NSString *message;
}

@property (nonatomic, retain) NSString *message;
@end

我正在实例化的视图控制器的 .m 文件(viewDidLoad仅限方法):

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"%@", self.message);
}

NSLog在引用的最后一个文件中返回 nil(查看加载没有任何问题)。我尝试过更改属性等 - 对我没有任何帮助。这里可能是什么问题?

4

2 回答 2

0

所选单元格的textLabel属性可以为 nil。使用中间字符串变量来获取单元格的文本,然后将消息设置为此。当您在调试器中单步执行第一个方法时,将更容易看到消息。

于 2013-04-15T07:35:44.660 回答
-1

不,它不起作用。您正在第一个控制器内创建控制器的对象并为该特定对象设置属性。那么如何在新的控制器对象中访问它呢?为此,您可以使用以下方法:

1.您可以覆盖第二个视图控制器中的init方法initWithMessage:(NSString *)message

2.您可以在appDelegate类中添加属性。这将通过应用程序共享。

3.但如果你想在课程中分享任何东西,最好的方法是创建一个单例课程。

于 2013-04-15T07:23:40.560 回答