无法在iOS中的视图控制器之间传输数据

时间:2014-06-25 20:59:02

标签: ios objective-c viewcontroller

我是Objective-c和stackOverflow的新手。 :)

我创建了两个视图控制器,它们通过名为“showDetailSegue”的segue连接。

在LPLvi​​ewcontroller1中,我有一个句子属性,我用它在LPLvi​​ewcontroller1的textview中设置文本,我想用segue来设置LPLvi​​ewcontroller中的sentence属性值。此外,我在LPLvi​​ewcontroller上有一个按钮,可以执行“showDetailSegue”。

然而,程序在

处停止
    int main(int argc, char * argv[])
    {
        @autoreleasepool {
            return UIApplicationMain(argc, argv, nil, NSStringFromClass([LPLAppDelegate      class]));
            (program breaks here)
        }
    }

系统日志

2014-06-25 16:49:43.199 test[6322:60b] -[LPLViewController button:]: unrecognized selector sent to instance 0x8d43f30
2014-06-25 16:49:43.204 test[6322:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[LPLViewController button:]: unrecognized selector sent to instance 0x8d43f30'

这是LPLvi​​ewController.m

#import "LPLViewController.h"
#import "LPLViewController1.h"


@interface LPLViewController ()

@end

@implementation LPLViewController

- (IBAction)press:(id)sender {
    [self performSegueWithIdentifier:@"showDetailSegue" sender:self];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if([segue.identifier isEqualToString:@"showDetailSegue"]){
        LPLViewController1 *controller = (LPLViewController1 *)segue.destinationViewController;
        controller.sentence = @"dfjlasdkfjlskdfjlksdjflkadsjf";
    }
}
@end

这是LPLvi​​ewController1.m

#import "LPLViewController1.h"

@implementation LPLViewController1

-(void) viewDidLoad
{
    _text.text = _sentence;    
}
@end

2 个答案:

答案 0 :(得分:0)

不是100%肯定没有看到头文件,但从例外情况来看,听起来你没有定义属性“句子”。

答案 1 :(得分:-1)

你需要在LPLViewController1.h头文件中使用它:

@property (nonatomic, strong) NSString *sentence

然后在LPLViewController1实现中使用self.sentence来访问该值。 prepareForSegue:sender方法很好。但这是非常基本的Objective C东西......