2016-04-19 8 views
0

は、だから私はこのUITextFieldにはUINavigationItem

-(UINavigationItem*)navigationItem{ 
    item = [[SearchNavigationItem alloc] init]; 
    item.delegate = self; 
    return item; 
} 

SearchNavigationItemのようなメソッドを介して私のビューコントローラでカスタムナビゲーションアイテムを実装していたときに、自分自身を設定しますそのキーボードを辞任ようにUITextFieldとを追加することはできません。

field.delegateは、そのアイテムを代理人として持ちます。

私の問題は、フィールドのテキストを取得しようとすると、それはゼロです。しかし、 "textfield changed"が呼び出されると、引数(textFieldDidChange:UITextField *)を使ってフィールドにアクセスすることができ、テキストがあります。

タイトルのような別の問題は、私が[field resignFirstResponder]を実行したときに何も起こらなかったことでした。

+0

navigationcontrollerを管理するためにストーリーボードを使用していますか?またはprepareforsegueメソッドを使用して? – Lion

+0

ねえ、実際に私はすでにそれを解決し、答えを投稿しました。私は2日までそれをそのようにマークすることはできません。 しかし、私は当初はXIBファイルを使用する予定だったので、単にnavigationItemクラスを設定できませんでした。それで、私はそれを返すメソッドを実装しなければならなかったのです。それが問題の原因でした。 –

答えて

0

私はすでに答えがあります。私は個人的にそれを修正している間は助けを見つけることができないので、私はこの質問を書いています。


だから、問題はnavigationItemを複数回呼び出すことができ、これは新しいバーを作成ままということです。

だから、解決策は、単に、本になりました:これは他の誰かを助け

-(UINavigationItem*)navigationItem{ 
    // Apparently it should be treated as a 'singleton' which I think it says 
    // kind of in the documentation. This comment is just to reinforce that 
    // it burned me to init it each time this method is called. Which is can 
    // be multiple times and also outside of the class itself (like when nav'ing) 
    if(item == nil){ 
     item = [[SearchNavigationItem alloc] init]; 
     item.delegate = self; 
    } 
    return item; 
} 

希望を。