我已经搞砸了两个小时,所以我想是时候问了,我之前已经在两个 View 之间传递了很多次数据,但这是我第一次遇到问题。
这是我的源代码 View 代码:
-(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);
}
}
当我在这里记录它时,它具有适当的值(value)。
这是我的目标 VC 的 .h
#import <UIKit/UIKit.h>
@interface TRDiscussionDetailsViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
@property (strong, nonatomic) NSString *discussionID;
@end
当我在 viewDidLoad: 中记录讨论 ID 值时,它显示为空。
最佳答案
如果 Discussion Details ViewController 是您的目标 View Controller ,则需要使其远离 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);
}
}
希望能帮助到你
关于ios - 未传递的值在目标 View Controller 中显示为 (null),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22867922/