叫我有一個具有以下的Objective-C - >無法訪問NSDatePicker如果超類方法是從子類
-(void) addDate method
NSDate *myDate = [myDatePIcker dateValue];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"YYYYMMdd"];
NSLog(@"addDate date is:%@",[dateFormat stringFromDate:myDate]);
當我打電話從上面的方法和IBAction爲這樣一類HelloWorldViewController ...
- (IBAction)myAddDate:(id)sender {
[self addDate];
}
它按預期工作(見下面的NSLog)
2013-03-14 09:05:33.149 APPNAME[3531:303] AWAKENED in Hello 2013-03-14 16:05:33 +0000
2013-03-14 09:05:33.150 APPNAME[3531:303] AWAKENED in Hello (null)
2013-03-14 09:05:35.898 APPNAME[3531:303] addDate date is:20130314
2013-03-14 09:05:35.899 APPNAME[3531:303] addDate completed with date 20130314
但是,如果我稱之爲 - (從另一個類(TableViewController),這是子類的方法(datePickerAction)無效)功能,見下文......
@implementation TableViewController:HelloWorldViewController
-(IBAction)datePickerAction:(id)sender{
[self addDate];
}
這是NSLog的
2013-03-14 09:08:01.719 APPNAME[3549:303] AWAKENED in Hello 2013-03-14 16:08:01 +0000
2013-03-14 09:08:01.720 APPNAME[3549:303] AWAKENED in Hello (null)
2013-03-14 09:08:03.321 APPNAME[3549:303] addDate date is:(null)
2013-03-14 09:08:03.322 APPNAME[3549:303] addDate completed with date (null)
2013-03-14 09:08:03.323 APPNAME[3549:303] addDate date is:(null)
2013-03-14 09:08:03.323 APPNAME[3549:303] addDate completed with date (null)
我是綠色的輸出,去容易:-)任何建議表示讚賞!
更新:我試圖實施下面的解決方案。這是更新的&附加代碼。該應用程序現在不會啓動...任何建議。
@implementation HelloWorldViewController;
-(id) init{
HelloWorldViewController *myHelloWorldController = [[HelloWorldViewController alloc] init];
return self;
}
#import <Foundation/Foundation.h>
#import <Cocoa/Cocoa.h>
#import "HelloWorldViewController.h"
#import "Date.h"
>
@interface TableViewController : NSTableView <NSTableViewDataSource> {
IBOutlet NSTableView *tableview;
NSMutableArray *list;}
#import "TableViewController.h"
#import "HelloWorldViewController.h"
@implementation TableViewController{
HelloWorldViewController *myHelloWorldViewController;}
- (id) init{
self = [super init];
if (self) {
list = [[NSMutableArray alloc] init];
}
return self;}
- (IBAction)datePickerAction:(id)sender{
[myHelloWorldViewController addDate];
//NSLog(@"Action Finished with date %@", myRename);}
我添加了關於我在哪裏嘗試的代碼,現在我遇到了啓動應用程序的問題。我可以展示哪些信息以幫助診斷?謝謝! – loopifnil 2013-03-14 19:32:49
Doh,我應該抓住無限的呼喚。我看到你對「威廉」比較的觀點。我將修改程序的結構,以代替使用我的HelloWorldViewController來接收myDatePicker的委託操作,它將委託給TableViewController,它不必使用中間類。感謝您的幫助,瞭解這一點,非常感謝。我也將清理我的繼承知識。 :-) – loopifnil 2013-03-14 20:42:05