Make sure that - (void) prepareForSegue
is running by verifying the segue id and putting a beakpoint inside the if statement in the method.
NSLog Printing (null) for object?
-
01-07-2022 - |
Frage
I am using delegation to pass an object from my AssignmentViewController to my TableViewController whenever my Save button is pressed.
I am trying to print out the content of the object that I should have just saved and passed over, but NSLog is showing (null). Can someone help me figure out why?
AssignmentViewController.h
@protocol AssignmentDelegate <NSObject>
-(void)newAssignment:(Homework *)assignment;
@end
@interface Assignment : UIViewController <UITextViewDelegate>
@property (nonatomic,weak)id<AssignmentDelegate> delegate;
@property(nonatomic) IBOutlet UITextField *ClassNameField;
@property(nonatomic) IBOutlet UILabel *ClassNameLabel;
@property(nonatomic) IBOutlet UITextField *AssignmentTitleField;
@property(nonatomic) IBOutlet UILabel *AssignmentTitleLabel;
@property (nonatomic, strong) Homework *homeworkAssignment;
- (IBAction)Save:(UIButton *)sender;
AssignmentViewController.m
- (IBAction)Save:(UIButton *)sender {
self.homeworkAssignment = [[Homework alloc] init];
self.homeworkAssignment.className = self.ClassNameField.text;
self.homeworkAssignment.assignmentTitle = self.AssignmentTitleField.text;
self.homeworkAssignment.assignmentDiscription = self.DiscriptionTextView.text;
[self.delegate newAssignment:self.homeworkAssignment];
NSLog(@"%@",self.delegate); //PRINTS (null)*******************************
[self.navigationController popViewControllerAnimated:YES];
}
And here Is my TableViewController.h incase the problem lies in here
@interface AssignmentTableController : UITableViewController
<
AssignmentDelegate
>
@property (strong, nonatomic) NSMutableArray *alist;
@end
TableViewController.m
-(NSMutableArray *)alist
{
if (!_alist) {
_alist = [[NSMutableArray alloc]init];
}
return _alist;
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"to2"]) {
Assignment *assignmentViewController = segue.destinationViewController;
assignmentViewController.delegate = self;
}
}
-(void)newAssignment:(Homework *)assignment
{
[self.alist addObject:assignment];
NSString *filePath = [self dataFilePath];
[NSKeyedArchiver archiveRootObject:self.alist toFile:filePath];
[self.tableView reloadData];
}
Lösung
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow