Проблема с делегатом. Я изменил вызов метода с
[self.delegate locationSelected: locationSelected]
, где location locationSelected - строка NSString, которая содержит строку из выбранной ячейки.
к
[delegate locationSelected: locationSelected];
например, если я создал протокол типа
@protocol locationControllerDelegate <NSObject>
- (void)locationSelected:(NSString *)location;
@end
и в интерфейсе класса, где объявлен протокол, он должен быть следующим образом
@interface SelectLocationViewController : UIViewController <UITableViewDataSource, UITableViewDelegate,locationControllerDelegate> {
.
.
id delegate;
}
@property (nonatomic, assign) id<locationControllerDelegate> delegate;
@end
и в методе didSelectForRowAtIndexPath
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSInteger row = [indexPath row];
NSString *locationSelected = [locationTypes objectAtIndex:row];
[delegate locationSelected: locationSelected];
}
и в классе, где метод реализован в файле .h в интерфейсе, протокол должен наследоваться так же, как мы используем другие делегатыUISCrollViewDelegate и т. Д.,) И в файле .m это как обычная реализация метода, мы можем реализовать метод, определенный в протоколе
Так что всякий раз, когда в TableView выбирается строка, этот метод вызывается и строкабудет установлен ярлык или текстовое поле, в которое вы хотите установить текст