У меня есть эта раскадровка: передать данные parentViewController [IOS]
При нажатии на кнопку «Insegnante» в первом контроллере представления (которым называется newCourseViewController) это показать мне вид таблицы с список преподавателей. Когда я нажимаю на учителя (и вызывается метод tableView:canEditRowAtIndexPath:
), я хочу, чтобы UITableViewController
«прошел» объект, нажатый на первый контроллер представления.
Это мой код для первого контроллера представления newCourseViewController.h
#import <UIKit/UIKit.h>
#import "Teacher.h"
@interface newCourseViewController : UIViewController
@property (nonatomic , strong) Teacher *teacher;
@end
И это мой код для первого контроллера представления newCourseViewController.m (только важный код)
#import "newCourseViewController.h"
#import "Courses.h"
#import "Teacher.h"
#import "addTeacherToCourseViewController.h"
@interface newCourseViewController()
@property (weak, nonatomic) IBOutlet UITextField *textField;
@end
@implementation newCourseViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void)setTeacher:(Teacher *)teacher
{
self.teacher = teacher;
NSLog(@"Maestro settato!");
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"addTeacherToCourse"]) {
[segue.destinationViewController setPreviousViewController:self];
}
}
Теперь код для второго контроллера вида addTeacherToCourseViewController-h
@interface addTeacherToCourseViewController : UITableViewController
@property (nonatomic , weak) id previousViewController;
@end
и addTeacherToCourseViewController.m (только важный метод)
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
Teacher *teacher = [self.teachers getTeacherInPosition:indexPath.row];
[self.previousViewController setTeacher:teacher];
[self.navigationController popViewControllerAnimated:YES];
}
В первом контроллере представления в методе prepareForSegue
я поставил себя в previousViewController
во втором представлении. Затем я «пропускаю» выбранного учителя и отклоняю второй контроллер представления. Когда приложение выполнит крах Xcode и сбой симулятора. Я не могу понять, в чем проблема. Вы можете мне помочь?
У вас есть что-нибудь особенное в viewWillAppear на новом контроллере курса? – Leonardo
Нет, ничего, но я решил проблему с делегацией. Был ответ на мой вопрос ниже (и я собирался голосовать как правильный ответ), но пользователь удалил (не знаю, почему, поскольку это был правильный ответ). Если вы возобновите спрос, выбор будет выбран как правильный, иначе я напишу решение. –