Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 将数据从基于plist的UITableView传递到UIViewController_Iphone_Class_Uitableview_Uiview_Uinavigationcontroller - Fatal编程技术网

Iphone 将数据从基于plist的UITableView传递到UIViewController

Iphone 将数据从基于plist的UITableView传递到UIViewController,iphone,class,uitableview,uiview,uinavigationcontroller,Iphone,Class,Uitableview,Uiview,Uinavigationcontroller,可能重复: 我有一个带有原型单元格的TableViewController。它由带有一系列字典的.plist中的标签和图像视图填充。如何将此数据传递到详图视图?详细视图是UIViewController子类。 我尝试过不同教程中的方法,但我就是找不到合适的组合来实现。代码示例将是伟大的 WinesViewController.h #import <UIKit/UIKit.h> @class WineObject; @interface WinesViewController :

可能重复:

我有一个带有原型单元格的TableViewController。它由带有一系列字典的.plist中的标签和图像视图填充。如何将此数据传递到详图视图?详细视图是UIViewController子类。 我尝试过不同教程中的方法,但我就是找不到合适的组合来实现。代码示例将是伟大的

WinesViewController.h

#import <UIKit/UIKit.h>
@class WineObject;

@interface WinesViewController : UITableViewController {
    WineObject *wine;
}

@end
#import <UIKit/UIKit.h>
@interface WineDetailViewController : UIViewController {
}
@property (nonatomic, retain) NSDictionary *wineDictionary;
@end
wineobject.m

@implementation WineObject 
@synthesize libraryContent, libraryPlist;

- (id)initWithLibraryName:(NSString *)libraryName {
if (self = [super init]) {
    libraryPlist = libraryName;
    libraryContent = [[NSArray alloc] initWithContentsOfFile:[[NSBundle mainBundle] 
                                                              pathForResource:libraryPlist ofType:@"plist"]];
}
return self;
}


- (NSDictionary *)libraryItemAtIndex:(int)index {
return (libraryContent != nil && [libraryContent count] > 0 && index < [libraryContent count]) 
? [libraryContent objectAtIndex:index]
: nil;
}

- (int)libraryCount {
return (libraryContent != nil) ? [libraryContent count] : 0;
}

- (void) dealloc {
if (libraryContent) [libraryContent release];
[super dealloc];
}

@end
@实现对象
@综合图书馆内容、图书馆内容;
-(id)initWithLibraryName:(NSString*)libraryName{
if(self=[super init]){
libraryPlist=libraryName;
libraryContent=[[NSArray alloc]initWithContentsOfFile:[[NSBundle mainBundle]
pathForResource:类型为@“plist”]]的libraryPlist;
}
回归自我;
}
-(NSDictionary*)图书馆项目索引:(int)索引{
return(libraryContent!=nil&&[libraryContent count]>0&&index<[libraryContent count])
?[图书馆内容对象索引:索引]
:无;
}
-(内部)图书馆计数{
返回(libraryContent!=nil)【libraryContent计数】:0;
}
-(无效)解除锁定{
if(图书馆内容)[图书馆内容发布];
[super dealoc];
}
@结束
WineCell.m

#import <UIKit/UIKit.h>

@interface WineCell : UITableViewCell

@property (nonatomic, strong) IBOutlet UILabel *nameLabel;
@property (nonatomic, strong) IBOutlet UILabel *districtLabel;
@property (nonatomic, strong) IBOutlet UILabel *countryLabel;

@end
#导入
@接口WineCell:UITableViewCell
@属性(非原子,强)IBUILabel*nameLabel;
@属性(非原子,强)IBUILabel*districtLabel;
@属性(非原子,强)IBUILabel*countryLabel;
@结束
WinesViewController.m 你可以把字典传给细节视图,不是吗?也许是这样的:

#import "WineDetailViewController.h"

@interface WinesViewController()
@property (nonatomic, retain) WineDetailViewController *wineDetailViewController;
@end

@implementation WinesViewController
@synthetize wineDetailViewController

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];    

    // This will give us the wine dictionary
    NSDictionary *dictionary = [wine libraryItemAtIndex:indexPath.row];


    if (wineDetailViewController == nil) {
      // Init the wine detail view
      wineDetailViewController = [WineDetailViewController alloc] init];  
    }
    // Here you pass the dictionary
    wineDetailViewController.wineDictionary = dictionary;

    [self.navigationController pushViewController:wineDetailViewController animated:YES];
}
WineDetailViewController.h

#import <UIKit/UIKit.h>
@class WineObject;

@interface WinesViewController : UITableViewController {
    WineObject *wine;
}

@end
#import <UIKit/UIKit.h>
@interface WineDetailViewController : UIViewController {
}
@property (nonatomic, retain) NSDictionary *wineDictionary;
@end

是否设置了tableView的数据源属性?您可以在IB/storyboard中执行此操作,也可以在代码中执行此操作。。。虽然我在代码中没有看到它。如果没有设置,那么tableView:cellforrowatinexpath:永远不会被调用。另一种可能性是,在VIEWWILLEXPEND:,从库中填充wine对象后,您可能需要调用[self.tableView reloadData]。谢谢!我尝试在ViewDidDisplay中以这种方式访问字典:countryLabel.text=[wineDictionary objectForKey:@“Country”];但那没有显示出任何东西。当我尝试NSString*country=[wineDictionary objectForKey:@“country]”;据说那个国家是一个未使用的国家。对如何设置它有什么建议吗?(我是新手,所以需要一段时间才能得到它)它告诉我们国家是一个未使用的变量,因为它没有被使用。尝试放置一个NSLog,如NSString*country=[wineDictionary objectForKey:@“country]”;NSLog(@“国家=%@”,国家);你得到了什么?