Ios 将操作连接到视图控制器时出现问题

Ios 将操作连接到视图控制器时出现问题,ios,objective-c,xcode,delegates,ibaction,Ios,Objective C,Xcode,Delegates,Ibaction,我正在做iOS学徒包,我不是很好 我正在学习教程,这时一个“完成”按钮停止工作。它附加到一个iAction,然后调用self.delegate。我知道这在我添加NSLog时起作用,但(在其目的地添加NSLog后)它从未到达。这意味着将用户输入的数据添加到新的表行中 非常感谢您的帮助!谢谢大家! 代码如下: ListDetailViewControllerTableViewController.h #import <UIKit/UIKit.h> @class ListDetailVi

我正在做iOS学徒包,我不是很好

我正在学习教程,这时一个“完成”按钮停止工作。它附加到一个iAction,然后调用self.delegate。我知道这在我添加NSLog时起作用,但(在其目的地添加NSLog后)它从未到达。这意味着将用户输入的数据添加到新的表行中

非常感谢您的帮助!谢谢大家!

代码如下:

ListDetailViewControllerTableViewController.h

#import <UIKit/UIKit.h>

@class ListDetailViewController;
@class Checklist;

@protocol ListDetailViewControllerDelegate <NSObject>
- (void)listDetailViewControllerDidCancel:(ListDetailViewController *)controller;
- (void)listDetailViewController:(ListDetailViewController *)controller didFinishAddingChecklist:(Checklist *)checklist;
- (void)listDetailViewController:(ListDetailViewController *)controller didFinishEditingChecklist:(Checklist *)checklist;
@end

@interface ListDetailViewController : UITableViewController <UITextFieldDelegate>

@property (nonatomic, strong) IBOutlet UITextField *textField;
@property (nonatomic, strong) IBOutlet UIBarButtonItem *doneBarButton;
@property (nonatomic, weak) id <ListDetailViewControllerDelegate> delegate;
@property (nonatomic, strong) Checklist *checklistToEdit;

- (IBAction)cancel;
- (IBAction)done;

@end
#import <UIKit/UIKit.h>
#import "ListDetailViewControllerTableViewController.h"
#import "DataModel.h"

@interface AllListsViewController : UITableViewController <ListDetailViewControllerDelegate>

@property (nonatomic, strong) DataModel *dataModel;

@end
AllListsViewControllerTableViewController.m

    - (IBAction)done
    {

        if (self.checklistToEdit == nil) {
            Checklist *checklist = [[Checklist alloc] init];
            checklist.name = self.textField.text;
            [self.delegate listDetailViewController:self didFinishAddingChecklist:checklist];

        } else {
            self.checklistToEdit.name = self.textField.text;
            [self.delegate listDetailViewController:self didFinishEditingChecklist:self.checklistToEdit];
        }

        NSLog(@"Hello, I'm a 'Done' log");

    }
- (void)listDetailViewController:(ListDetailViewController *)controller didFinishAddingChecklist:(Checklist *)checklist
{
    NSLog(@"Adding Checklist");

    controller.delegate = self;

    NSUInteger newRowIndex = [self.dataModel.lists count];
    [self.dataModel.lists addObject:checklist];

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:newRowIndex inSection:0];
    NSArray *indexPaths = [NSArray arrayWithObject:indexPath];
    [self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];

    [self dismissViewControllerAnimated:YES completion:nil];

    NSLog(@"finished adding checklist");
}
AllListsViewControllerTableViewController.h

#import <UIKit/UIKit.h>

@class ListDetailViewController;
@class Checklist;

@protocol ListDetailViewControllerDelegate <NSObject>
- (void)listDetailViewControllerDidCancel:(ListDetailViewController *)controller;
- (void)listDetailViewController:(ListDetailViewController *)controller didFinishAddingChecklist:(Checklist *)checklist;
- (void)listDetailViewController:(ListDetailViewController *)controller didFinishEditingChecklist:(Checklist *)checklist;
@end

@interface ListDetailViewController : UITableViewController <UITextFieldDelegate>

@property (nonatomic, strong) IBOutlet UITextField *textField;
@property (nonatomic, strong) IBOutlet UIBarButtonItem *doneBarButton;
@property (nonatomic, weak) id <ListDetailViewControllerDelegate> delegate;
@property (nonatomic, strong) Checklist *checklistToEdit;

- (IBAction)cancel;
- (IBAction)done;

@end
#import <UIKit/UIKit.h>
#import "ListDetailViewControllerTableViewController.h"
#import "DataModel.h"

@interface AllListsViewController : UITableViewController <ListDetailViewControllerDelegate>

@property (nonatomic, strong) DataModel *dataModel;

@end
#导入
#导入“ListDetailViewControllerTableViewController.h”
#导入“DataModel.h”
@接口AllListsViewController:UITableViewController
@属性(非原子,强)数据模型*数据模型;
@结束

谢谢

问题在于您在哪里设置委托--您不能在委托协议方法(listDetailViewController:DidFinishadingChecklist:)的实现中设置它,因为只有在已设置委托的情况下才会调用该方法。创建ListDetailViewControllerTableViewController类的实例时,需要设置委托。

是否正在合成委托?此外,代理似乎是在
didfinisheddingchecklist
函数中设置的,但它应该在创建ListDetailViewControllerTableViewController时设置,否则它将不知道什么是对象
self.delegate
。是否只在
listDetailViewController:didfinisheddingchecklist:
中设置代理?或者其他地方?如果有帮助,我在这里创建它:@property(非原子,弱)id delegate;在listDeatilViewControllerTableViewController中。h@Pfitz这里:-(void)listDetailViewController:(listDetailViewController*)控制器完成检查表:(检查表*)检查表;请在同一位置检查@rdelmar的答案。这肯定是你的问题!