我现在已经搞乱了两个小时了,所以我觉得是时候问了,我之前已经多次在两次观看之间传递了数据,但这是我第一次和&# #39;曾经遇到过问题。
继承我的源视图代码:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
TRTranslation *translation = [discussionsArray objectAtIndex:indexPath.row];
selectedDiscussionID = translation.discussionID;
[self performSegueWithIdentifier:@"communityToDetails" sender:self];
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"communityToDetails"])
{
TRDiscussionDetailsViewController *ddvc = [[TRDiscussionDetailsViewController alloc] init];
ddvc.discussionID = selectedDiscussionID;
NSLog(@" discussion id %@", ddvc.discussionID);
}
}
当我在此处记录它时,它具有适当的值。
继承我目的地VC的.h
#import <UIKit/UIKit.h>
@interface TRDiscussionDetailsViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
@property (strong, nonatomic) NSString *discussionID;
@end
当我在viewDidLoad中记录discussionID值时:它出现了null。
答案 0 :(得分:3)
如果TRDiscussionDetailsViewController是您的目标视图控制器,则需要使其远离segue而不是重新实例化它。我认为你应该这样做:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"communityToDetails"]) {
TRDiscussionDetailsViewController *ddvc = (TRDiscussionDetailsViewController*)segue.destinationViewController;
ddvc.discussionID = selectedDiscussionID;
NSLog(@" discussion id %@", ddvc.discussionID);
}
}
希望有所帮助
答案 1 :(得分:2)
替换:
TRDiscussionDetailsViewController * ddvc = [[TRDiscussionDetailsViewController alloc] init];
使用:
TRDiscussionDetailsViewController * ddvc =(TRDiscussionDetailsViewController *)[segue destinationController];
因为在您的代码中,您创建了一个新的TRDiscussionDetailsViewController
,但这不是在执行segue时创建的内容。
答案 2 :(得分:1)
你可以试试这个
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{ if ([segue.identifier isEqualToString:@"communityToDetails"]) {
TRDiscussionDetailsViewController *ddvc = (TRDiscussionDetailsViewController *)[segue destinationViewController];;
ddvc.discussionID = selectedDiscussionID;
NSLog(@" discussion id %@", ddvc.discussionID);
}
}