您好我正在尝试使用标签和导航制作一个简单的ios应用。
委托中的我有以下类型:
BlogRss * _currentlySelectedBlogItem;
使用此属性:
@property (readwrite,retain) BlogRss * currentlySelectedBlogItem;
我试图用另外两个类来获取他的数据,一个是带有数据的表视图,另一个是显示数据; 我在两个班级都宣布了以下内容:
@class NewsAppDelegate;
NewsAppDelegate * _appDelegate;
@property (nonatomic, retain) IBOutlet _NewsAppDelegate * appDelegate;
@synthesize appDelegate = _appDelegate;
在表视图中“触摸”单元格我写道:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[[self appDelegate] setCurrentlySelectedBlogItem:[[[self rssParser]rssItems]objectAtIndex:indexPath.row]];
// Navigation logic may go here. Create and push another view controller.
// [[self appDelegate] loadNewsDetails];
NewsDetailViewController *detailViewController = [[NewsDetailViewController alloc] initWithNibName:@"NewsDetailViewController" bundle:nil];
// ...
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
}
当我在另一堂课写作时:
NSLog(@"%@",self.appDelegate.currentlySelectedBlogItem);
我变空了。
显然我做错了什么,但我不知道是什么......答案 0 :(得分:0)
请按照以下步骤进行操作。
//Your Header File
#import "YourAppDelegate.h"
@interface YourViewController : UIViewController
{
YourAppDelegate *appDelegate;
}
@property(nonatomic,retain) YourAppDelegate *appDelegate;
@end
//Your Implementation file
@implementation YourViewController
@synthesize appDelegate
- (void)viewDidLoad {
self.appDelegate = (YourAppDelegate*) [[UIApplication sharedApplication] delegate];
}
@end
如上所述,您可以在视图控制器的任何位置访问appDelegate。
希望它有所帮助。
答案 1 :(得分:0)
问题可能是这一行返回null:
[[[self rssParser]rssItems]objectAtIndex:indexPath.row]
当你没有嵌套这么多句子时,代码更容易调试。
您可以从任何地方访问您的代理,因为UIApplication是一个单例,您不需要像self.appDelegate
一样保留引用。例如:
(NewsAppDelegate *)[[UIApplication sharedApplication] delegate];
或者就像詹妮斯所说的那样,谁比我更快,并删除了IBOutlet。 :P
当你这样做时
NewsAppDelegate * _appDelegate;
@property (nonatomic, retain) IBOutlet _NewsAppDelegate * appDelegate;
@synthesize appDelegate = _appDelegate;
如果跳过第一行,结果是相同的,因为运行时会为您创建它。 见Question about @synthesize。我猜_NewsAppDelegate真的是NewsAppDelegate(没有下划线)。