だからここで何が起こっているのか(私が初心者であることを除いて)。
AddAPlaceViewControllerとshowCategoriesViewControllerの2つのビューコントローラーがあります。
AddAPlaceVCにテーブルセルがあり、これをタップすると、showCategoriesVC(テーブルビューコントローラー)が開き(モーダル)、10個のオプションのリストが表示されます。それらの1つをタップするか、キャンセルボタンをタップします。
私はプロトコルとデリゲートを理解し、理解するのに何日も費やしました。私はそれらを正しく設定していると思いますが、なぜそれらが機能していないか、呼び出されていないのか理解できません。私はあらゆる種類の変更を試みましたが、今のところ運がありません。
あなたたちは私の唯一の希望です!:)
コードの重要な部分は次のとおりです。
AddAPlaceViewController.h
AddAPlaceViewController.h
#import <UIKit/UIKit.h>
#import "showCategoriesViewController.h"
@interface AddAPlaceViewController : UIViewController <UITextViewDelegate, UITextFieldDelegate, UINavigationControllerDelegate, UIImagePickerControllerDelegate, UIActionSheetDelegate, UITableViewDataSource, UITableViewDelegate, ShowCategoriesViewControllerDelegate>
AddAPlaceViewController.m
AddAPlaceViewController.m
#import "AddAPlaceViewController.h"
#import "FSQVenue.h"
#import "Categories.h"
//#import "showCategoriesViewController.h"
#import <QuartzCore/QuartzCore.h>
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// Un-highlight the selected cell
[categoryTable deselectRowAtIndexPath:indexPath animated:YES];
showCategoriesViewController *SCVC = [[showCategoriesViewController alloc] init];
SCVC = [self.storyboard instantiateViewControllerWithIdentifier:@"showCategories"];
SCVC.categoryDelegate = self;
[self.navigationController presentModalViewController:SCVC animated:YES];
}
#pragma mark showCategoriesViewControllerDelegate
-(void)didSelectOptions:(NSInteger )selectedCategory
{
NSInteger category = selectedCategory;
NSLog(@"Add Places %d", category);
[self dismissModalViewControllerAnimated:YES];
}
-(void)didCancelOptions
{
NSLog(@"Add Places -- Dismiss Button Pressed");
[self dismissModalViewControllerAnimated:YES];
}
showCategoriesViewController.h
showCategoriesViewController.h
#import <UIKit/UIKit.h>
@protocol ShowCategoriesViewControllerDelegate;
@interface showCategoriesViewController : UITableViewController
{
id<ShowCategoriesViewControllerDelegate>categoryDelegate;
}
@property (nonatomic, weak) id<ShowCategoriesViewControllerDelegate> categoryDelegate;
- (IBAction)cancelButton:(id)sender;
@end
@protocol ShowCategoriesViewControllerDelegate <NSObject>
- (void)didSelectOptions:(NSInteger )selectedCategory;
- (void)didCancelOptions;
@end
showCategoriesViewController.m
showCategoriesViewController.m
#import "showCategoriesViewController.h"
#import "Categories.h"
@interface showCategoriesViewController ()
@property (strong, nonatomic) NSArray *categoryArray;
@end
@implementation showCategoriesViewController
@synthesize categoryDelegate = _categoryDelegate;
@synthesize categoryArray;
…
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
[_categoryDelegate didSelectOptions:indexPath.row];
NSLog(@"Selected IndeXPath %@", cell);
NSLog(@"Selected IndeXPath GOING TO DELEGATE %d", indexPath.row);
}
- (IBAction)cancelButton:(id)sender {
[_categoryDelegate didCancelOptions];
NSLog(@"Button Pressed");
}