开发者

Calling on a Variable Defined in a Different File's Header?

I'm new to iOS development and have a question regarding variables. I'm attempting to write an application with a tab b开发者_开发百科ar and navigation controller, the tab bar being the rootViewController. I've set up my application to include a .plist that includes my table view's behaviors, a UITableViewController, and a detail view controller. I continue to get one error in the implementation file of my initial table view controller as I defined the navigation controller in my App delegate.

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

//Get the dictionary of the selected data source.
NSDictionary *dictionary = [self.tableDataSource objectAtIndex:indexPath.row];

//Get the children of the present item.
NSArray *Children = [dictionary objectForKey:@"Children"];

if([Children count] == 0) {

    DetailViewController *dvController = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:[NSBundle mainBundle]];
    [self.navigationController pushViewController:dvController animated:YES];
    [dvController release];
}
else {

    //Prepare to tableview.
    IndustryTableViewController *industryTableViewController = [[IndustryTableViewController alloc] initWithNibName:@"IndustryTableViewController" bundle:[NSBundle mainBundle]];

    //Increment the Current View
    industryTableViewController.CurrentLevel += 1;

    //Set the title;
    industryTableViewController.CurrentTitle = [dictionary objectForKey:@"Title"];

    //Push the new table view on the stack
    [self.indNavControl pushViewController:industryTableViewController animated:YES];

    industryTableViewController.tableDataSource = Children;

    [industryTableViewController release];
}

}

I get the error when I push the new table view on the stack. I am importing the header file of my app delegate, but it still will not work, giving me the error, "Variable not defined in TableViewController.h". Is there a way for me to summon this variable, or is there a more effective way for me to solve this issue?

Thanks in advance, I can really use any help you give me.


You can get a pointer to your appDelegate and then get your variable like so:

YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate];

Another way would be to use dependency injection and inject the reference into your controller when you create it. So basically define an ivar in your controller to hold a reference and then do this:

[myController new];
[myController setController:otherController];


You are referring to navigationController with self.navigationController.

This implies that navigationController is a variable defined in your TableViewController class.

You should define this variable in your class and modify your init method of the tableviewcontroller to receive that variable.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜