マスター詳細アプリケーションテンプレートのマスターから詳細ビューをプッシュしています。クリックされた行に応じて異なる情報を含む単一のビューをロードしたいと思います。plistファイルからデータをロードする予定です。追加したときにMasterViewControllerで使用したコードは次のとおりですdidSelectRowAtIndexPath:
DetailViewController *dvc = [[DetailViewController alloc]init];
dvc.rowItem = [_objects objectAtIndex:indexPath.row];;
NSLog(@"row is %i", indexPath.row);
NSLog(@"master %@", dvc.rowItem);
ここで、rowItemはにNSString
属しDetailViewController
ます。viewDidLoad
私が入れたの中DetailViewController
に:
[super viewDidLoad];
NSLog(@" thingy %@", rowItem);
[self setup:rowItem];
そしてsetup
このように見えます:
-(void) setup: (NSString *)eval {
filePath = [NSString stringWithFormat:@"%@.plist",eval];
NSLog(@"%@", filePath);
NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
NSString *subName;
NSString *yesNo;
NSString *theseChanges;
subName = [plistDict objectForKey:@"subContractAddress"];
yesNo = [plistDict objectForKey:@"yesOrno"];
theseChanges = [plistDict objectForKey:@"Changes"];
}
これが私のインターフェースです:
#import <UIKit/UIKit.h>
@interface DetailViewController : UIViewController
@property (strong, nonatomic) id detailItem;
@property (strong, nonatomic) IBOutlet UILabel *detailDescriptionLabel;
@property (strong, nonatomic) IBOutlet UIButton *finishedButton;
@property (strong, nonatomic) IBOutlet UITextView *changes;
@property (strong, nonatomic) IBOutlet UIButton *saveButton;
@property (strong, nonatomic) IBOutlet UISwitch *test;
@property (strong, nonatomic) IBOutlet UILabel *finishedLabel;
@property (strong, nonatomic) IBOutlet UITextField *subContractName;
@property BOOL needsChanges;
@property (strong, nonatomic) NSString *rowItem;
-(IBAction)change:(id)sender;
-(IBAction)save:(id)sender;
@end
ビルドして実行すると、次のコンソール出力が得られます。
thingy (null)
(null).plist
row is 0
master Excavations
最初の行を押すと、
thingy (null)
(null).plist
row is 1
master Flooring
どういうわけか、rowItemはクロスオーバーでnullに設定されています。誰かが私がここで間違っていることを見ることができますか?