Re: [iPhone] (newbie) navigation controller is null, combining navigation controller and tab bar controller
Re: [iPhone] (newbie) navigation controller is null, combining navigation controller and tab bar controller
- Subject: Re: [iPhone] (newbie) navigation controller is null, combining navigation controller and tab bar controller
- From: Beth Freeman <email@hidden>
- Date: Mon, 15 Jun 2009 09:50:36 -0700
Greg -Yes! That was it. I had missed hooking up the outlet in the App
Delegate. I first tried the method you suggested and it worked; then I went
into IB and hooked up the outlet correct to the topicsTableNavController and
that worked too.
Thank you SO much.
Beth
On Mon, Jun 15, 2009 at 9:17 AM, Greg Titus <email@hidden> wrote:
> Hi Beth,
>
> Something that you might try, just to simplify the number of IB hookups and
> cut down on the possibility of errors there, is to change this line:
>
> [delegate.topicsTableNavController pushViewController:questionDetail
> animated:YES];
>
> To just:
>
> [self.navigationController pushViewController:questionDetail animated:YES];
>
> The UIViewController class has a method (-navigationController) to access
> the navigation controller that it is currently inside of. Using it will keep
> you from having to look up you app delegate, since it looks like the problem
> that you are having is that your app delegate's "topicsTableNavController"
> outlet is not getting set.
>
> Hope this helps,
> - Greg
>
>
> On Jun 15, 2009, at 8:26 AM, Beth Freeman wrote:
>
> Hello,This is a follow up question to my previous question about combining
>> a
>> navigation controller with a tab bar controller.
>>
>> I have successfully combined the two in building the interface with
>> Interface Builder: My top level controller is a tab bar controller. This
>> references a navigation controller, which references a table view
>> controller. Selecting a row from the table view is then supposed to
>> display
>> a UI view (ie, not another table view). When I run the program, I see the
>> tab bar, the navigation bar and the table with my data just fine. However,
>> when I select a row from the table, I never see the UI view.
>>
>> In my accessoryButtonTappedForRowWithIndexPath method (see below) in my
>> table view controller, my navigation controller appears to be null. When
>> I
>> put a breakpoint at the line when I push the view controller on the stack,
>> the address of the navigation controller is 0x0.
>>
>> I have studied TheElements example from Apple extensively and believe I am
>> doing everything correctly in IB. Since TheElements example is built
>> programmatically, it's a little difficult for me to know if I've done
>> everything I need to do to hook things up correctly, but I believe I have.
>> My understanding is that when I drag a controller from the library into my
>> MainWindow.xib window, I'm "instantiating" that as an object. I have an
>> object in my MainWindow.xib window whose class is set to
>> TopicsTableNavController (the navigation controller for the first tab),
>> however, as described above, this appears to not be instantiated at the
>> breakpoint.
>>
>> In TheElements example, the navigation controllers are created and added
>> to
>> the tab bar view controllers programmatically. My assumption was that
>> when
>> you assign the view controllers for the tab bar controller through IB, and
>> set the class of each of the view controllers through IB, I'm
>> instantiating
>> the objects at that time.
>>
>> Am I missing something? Is there something I need to do programmatically
>> to
>> set up the navigation controller that I don't know about? Am I wrong
>> about
>> how IB works?
>>
>> In the code below, I set up the view controller for the view that should
>> be
>> pushed onto the stack (questionDetail) and, I assume, displayed. I do see
>> the log message just before the push, and have verified that my view is
>> being set up correctly. However, the view is never displayed, I'm
>> guessing
>> because the navigation controller is 0x0 and is thus nil.
>>
>> Thanks so much in advance for any help.
>>
>> Elisabeth
>>
>>
>>
>> - (void)tableView:(UITableView *)tableView
>> accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
>>
>> NSUInteger row = [indexPath row];
>>
>> if (self.questionDetail == nil) {
>>
>> QuestionDetail *aQuestionDetail = [[QuestionDetail alloc] initWithNibName:
>> @"QuestionDetail" bundle:nil];
>>
>> self.questionDetail = aQuestionDetail;
>>
>> [aQuestionDetail release];
>>
>> }
>>
>> questionDetail.title = [NSString stringWithFormat:@"Question from %@",
>> [topicsArray objectAtIndex:row]];
>>
>> if (QADetail != nil) {
>>
>> [questionDetail.question setText:[QADetail objectForKey:@"question"]];
>>
>> [questionDetail.answer setText:[QADetail objectForKey:@"answer"]];
>>
>> }
>>
>> NDQAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
>>
>> NSLog(@"Pushing Question Detail View Controller");
>>
>> [delegate.topicsTableNavController pushViewController:questionDetail
>> animated:YES];
>>
>> }
>> _______________________________________________
>>
>> Cocoa-dev mailing list (email@hidden)
>>
>> Please do not post admin requests or moderator comments to the list.
>> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>>
>> Help/Unsubscribe/Update your Subscription:
>>
>> This email sent to email@hidden
>>
>
>
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden