Xcode, похоже, не находит свойства данного UITableViewController, хотя я импортирую его, и они кажутся правильно определенными на классе.«свойство не найдено на объекте типа» ошибка в prepareForSegue пытается отправить параметры в следующий контроллер представления таблицы
Я попытался очистить, удалить производные данные, перезапустить XCode и построить снова, ничто из этого не работает. Также попытались получить доступ к собственности через сеттер.
Это мой код:
MasterViewController.m
#import "DetailTableViewController.h"
...
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"nextScreen"]) {
DetailTableViewController *detailTableViewController = [segue destinationViewController];
NSInteger tagIndex = [(UIButton *)sender tag];
detailTableViewController.productType = tagIndex;
/*[detailTableViewController setProductType:tagIndex];*/ //This does not work either.
} else if ([[segue identifier] isEqualToString:@"anotherSegue"]){
MyLoginViewController *loginViewController = [segue destinationViewController];
loginViewController.delegate = self; //Funnily enough, this one works
}
}
DetailTableViewController.h #import
@interface DetailTableViewController : UITableViewController<UITableViewDelegate, UITableViewDataSource> {
NSInteger *productType;
}
@property (nonatomic) NSInteger *productType;
@end
DetailTableViewController.m
@implementation DetailTableViewController
@synthesize productType = _productType;
...
редактировать: ошибка приходит в эту линию:
detailTableViewController.productType = tagIndex;
Кто-нибудь есть идея о том, почему это могло произойти? Спасибо!
Обновлено:
Похоже, это что-то связано с тем, как XCode ссылается мои файлы, это действительно странно:
Когда я Cmd + щелчок на detailTableViewController (тот, где я создаю мой экземпляр) он принимает меня к реальному коду:
detailTableViewController *detailTableViewController = [segue destinationViewController];
Но когда я Cmd + щелчок на чертенка ort line, это приводит меня к некоторому интерфейсу с тем же именем, что и мое, и тому же объявлению, за исключением того, что у него нет никаких свойств, которые имеет мой код.
#import "DetailTableViewController.h"
Кто прошел через тот же вопрос?
Просто хотелось подчеркнуть, что при создании объекта, ссылающегося на DetailTableViewController, функция автозаполнения не находит каких-либо свойств этого класса, как противоположна LoginController, где находит свойство делегирования. –
Итак, у вас должно быть два класса с одним и тем же именем, плавающим вокруг, вы это проверили? поэтому автозаполнение не сможет также найти свойства класса. проверьте свою файловую структуру и убедитесь, что у вас нет дубликатов. – jere
Спасибо @jere, вы были правы, и вот что случилось, файл был дважды в файловой системе по какой-то причине, я понял, что сразу после публикации обновления. Благодаря! –