我想要做的事情是:委託錯誤
首先,TopPlacesViewController
有SEGUE到類SinglePlacePhotosViewController
(一TableView
控制器)。
我在TopPlacesViewController
類中創建一個委託,然後使用prepareforSegue
方法將SinglePlacePhotosViewController
設置爲委託並實現協議方法。
然後,當我點擊TopPlacesViewController
(TableView控制器)中的一張照片時,它會調用方法TopPlacesViewController
,該方法應顯示來自該位置的一些照片。
但我一直收到此錯誤:
[SinglePlacePhotosViewController setDelegate:]: unrecognized selector sent to instance 0xc94cc20
我TopPlacesViewController.h
文件:
@class TopPlacesViewController;
@protocol TopPlacesViewControllerDelegate
- (void)topPlacesViewControllerDelegate:(TopPlacesViewController *)sender
showPhotos:(NSArray *)photo;
@end
@interface TopPlacesViewController : UITableViewController
@property (nonatomic,weak) id <TopPlacesViewControllerDelegate> delegate;
@end
TopPlacesViewController.m
:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSDictionary *place = [self.places objectAtIndex:indexPath.row];
self.singlePlacePhotos = [FlickrFetcher photosInPlace:place maxResults:50];
[self.delegate topPlacesViewControllerDelegate:self showPhotos:self.singlePlacePhotos];
[self performSegueWithIdentifier:@"Flickr Photos" sender:self];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"Flickr Photos"]) {
[segue.destinationViewController setDelegate:self];
}
}
在這個
然後,我實現委託:
@interface SinglePlacePhotosViewController() <"TopPlacesViewControllerDelegate">
- (void)topPlacesViewControllerDelegate:(TopPlacesViewController *)sender showPhoto:(NSArray *)photo
{
self.photos = photo;
}
segue.destinationViewController的定義沒有-setDelegate。 – Vervious
實際上,我只是看着它。 – Pan
這很奇怪。 SinglePlacePhotosViewController是否定義了它? – Vervious