これは一晩中私を悩ませてきました、それは意味がありません. この関数は、本来あるべきものを返します。例えば、問題名。
-(id)initWithIssue:(NSString *)string {
self = [super initWithNibName:nil bundle:nil];
if (self) {
NSString *thing = string;
issueName = [[NSString alloc]initWithString:thing];
NSLog(@"The issue name = %@", issueName);
}
return self;
}
ただし、viewDidLoad: Nothing で「issueName」にアクセスしようとすると、何をしても null に等しくなります。クリーニング、カスタム セッターの設定、プロパティまたは Ivar の切り替えなどを試しました。非常に腹立たしいのは、このストリングがプログラムのこの時点で消えてしまうことです。
一体何が起こっているのか、これは腹立たしいです。
編集
これは、関連するコード全体です。そして、私がどのように始めたか。
ドット h ファイル:
@interface BFPaidAreaViewController : UITabBarController <BFNewsTableViewControllerDelegate> {
NSString *issueName;
}
-(id)initWithIssue:(NSString *)string;
ドット m ファイル:
-(id)initWithIssue:(NSString *)string {
self = [super init];
if (self) {
// PLPiper I had it that way before, because I was fiddling out of frustration
issueName = [[NSString alloc] initWithString:string];
NSLog(@"This is Called, the issue name is equal to = %@", issueName);
}
return self;
}
-(void)viewDidLoad {
[super viewDidLoad];
NSLog(@"The issue = %@", issueName);
}
私は次のようにView Controllerを呼び出しています:
BFPaidAreaViewController *pavc = [[BFPaidAreaViewController alloc]initWithIssue:@"test"];
これはログに記録されます:
This is Called, the issue name is equal to = test
The issue = (null)
新しい編集
問題が見つかりました。UITableViewController です。奇妙なことに、クラスを UIViewController に変更すると機能します。これはバグですか、それとも単なる正常な動作ですか? しかし、もっと差し迫った問題として、この制限を回避するにはどうすればよいでしょうか?
(私がUIに関して行ったことを説明するために、UITabBarControllerはモーダルビューにあります。これはUIViewControllerでうまく機能します。)
神ひどい修正
-(id)initWithIssue:(NSString *)string {
self = [super initWithNibName:nil bundle:nil];
if (self) {
NSString *thing = string;
issueName = [[NSString alloc]initWithString:thing];
NSLog(@"The issue name = %@", issueName);
}
[self viewDidLoad];
return self;
}
汚い感じがします。しかし、それは今のところやらなければならないでしょう、私は続けることができます. 誰かが解決策を考えることができるなら教えてください。私の元気で申し訳ありませんが、人々が「これは一体何ですか?? issueNameとは?? イヴァル??」それが質問に本当に暗黙のうちにあったとき。