我有一个表示昵称的tableViewCell,当你点击它时,一个segue会带你到一个带有文本字段的视图控制器,在那里你可以输入一个昵称,一旦按下后退按钮它就应该出现在detailTextLabel中。主表视图控制器。我只是一直收到错误,我发布了下面的代码,我也得到了错误。
昵称文字字段代码:
#import "NicknameViewController.h"
@interface NicknameViewController ()
@end
@implementation NicknameViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self.delegate updateCarNickname:self.nicknameField];
}
@end
以下是昵称视图控制器的头文件:
#import <UIKit/UIKit.h>
@protocol CarNicknameDelegate <NSObject>
@optional
- (void)updateCarNickname:(UITextField *)updateNickname;
@end
@interface NicknameViewController : UIViewController
@property (nonatomic, weak) id <CarNicknameDelegate> delegate;
@property (strong, nonatomic) IBOutlet UITextField *nicknameField;
@end
在主视图控制器中,我不断收到此代码的错误,似乎无法弄明白:
-(void)updateCarNickname:(UITextField *)updateNickname {
self.nicknameCell.detailTextLabel.text = updateNickname;
}
在segue开始之前,我使用了这段代码:
if ([segue.identifier isEqualToString:@"nicknameSegue"]) {
NicknameViewController *controller = segue.destinationViewController;
controller.delegate = self;
}
答案 0 :(得分:0)
一旦视图控制器的dealloc被调用,视图控制器中的所有视图都会被释放。
您应该将CarNicknameDelegate
的参数UITextField
更改为NSString
。
@protocol CarNicknameDelegate <NSObject>
@optional
- (void)updateCarNickname:(UITextField *)updateNickname;
@end
并将您的NicknameViewController
更改为此类内容。
@interface NicknameViewController ()
@end
@implementation NicknameViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self.delegate updateCarNickname:self.nicknameField.text];
}
@end