2011-09-15 1 views
0

これは私の最初の投稿ですが、このコミュニティのメンバーからの多くの質問と回答の助けを借りて、プロジェクトをほぼ完了しました。ブランチビューコントローラを皮肉って押す

私は尋ねているものに似た複数のスレッドを読みましたが、メソッドは全く異なりました。これまでのコードはありませんでした。基本的には

(私のコードは複雑な混乱の中に素敵な蛇のような降下を含むが、適用可能なスニペットは、要求に応じて設置されるので、私はこれを言う)、私の問題は、私は

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

を呼んでいるということです私のviewcontrollerをシミュレータにプッシュし、NSLogsは私が必要とする文字列を美しく変更しましたが、それは空白のビューをプッシュします!その実行のコードは、ビューコントローラ変数を一定にします。

UIViewController *viewController = [[xSheetMusicViewController alloc]initWithNibName:nil bundle:nil]; 

だから私は何しているのですか?だから私はUIViewcontrollerをif-then、if-else-thenステートメントにすることで、特定の行が選択されているかどうか(標準のもの)によって異なるビューをプッシュする古いメソッドに戻りました。これは完全にロードされた文字列で新しいビューをプッシュしましたが、NSLogは1つの文字列だけを何度も繰り返しました!そして、最悪の部分は、私のアプリがSIGABRT、またはEXC_BAD_ACCESSを呼び出してrootviewcontrollerに戻ろうとしたときでした。 (ここでは該当するコードです):

UIViewController *viewController = [[[UIViewController alloc]init]autorelease]; 
if (indexPath.row == 0 && indexPath.section == 0) { 
    appDelegate.baseURL = @"mussette.pdf"; 
viewcontroller = [[xSheetmusicViewController alloc]initwithnibname:nil bundle:nil]; 
} 
else if (...) 
//pushview, changestring, blah blah// 

を今、私はそれがになっているように私の見解は、PDFをプッシュすることを好む、と正しい文字列値を持っている(私にSIGABRTまたはEXC_BAD_ACESSを与えていないが、それらはギブンスある)でしょうしかし、妥協は私の手の届かないところにあるようです。私はおそらく、私がやっている愚かなことが、1行のコードで解決できるかもしれないことは分かっていますが、今のところそれは絶望的です。

ありがとうございます。

編集:すべての質問に答えるために、はい、 (id)init メソッドが次のビューにあります。

EDIT 2:lostInTransitのリクエストにお答えして、いくつかの追加の詳細を追加する:それは場合に役立ちます

<else if (indexPath.row == 1 && indexPath.section == 0) { 
    appDelegate.baseURL = @"Importing PDF's.pdf"; 

はまた、出力はログを保持します: アプリケーションは、ターゲット上のゼロビューコントローラをプッシュしようとしました。

私はtableviewcellからビューをプッシュしようとすると、それはPDFを右に読み込んだので、私はそれを無視した。

+0

なぜあなたはinitWithNbName:nilを呼び出していますか?あなたはインターフェイスビルダーを使ってXIBを持っていますか?もしあなたがそうであれば、どうしてあなたは@ "myXibFileName"で電話していませんか? – bryanmac

+3

FWIW、nib名として 'nil'を渡すと、自動的にView Controllerのクラスと同じ名前のnibが検索されます。 –

答えて

2

質問:最初にviewControllerをUIViewControllerとして初期化し、次にxSheetmusicViewControllerとして再度初期化しますか?問題は正しく値を公開することだと思います。あるinitでは、autoreleaseを行いますが、もう一方では行いません。BAD ACCESSの2倍の変数をリリースしている可能性があります。

コードの最後の部分に "blah blah"というメッセージを投稿しても構いませんか?

+1

提案していただきありがとうございます。私はそれを投票することができればいいけど、今のところはチェックマークのために解決しなければならない;) – CodaFi

0

アプリケーションにxSheetmusicViewController.xibという名前のファイルがありますか? [[xSheetmusicViewController alloc] initNithNibName:nil bundle:nil];(ビュープロパティに最初にアクセスしたときに実際に読み込まれます)を呼び出すと、そのビューアーコントローラーが所有者としてロードされます。そのファイルが存在しない場合は、ビューコントローラの-loadView:メソッドが呼び出され、ビューがロードされます。

ブランク表示の場合は、空白または名前のついていないペン先があります(名前はペン先に変更されていない可能性があります)か、-loadView:に正しいビューを作成していません。

関連する問題