这是我的.h
文件
#import <UIKit/UIKit.h>
@interface PersonViewController : UIViewController
@property(strong,nonatomic) NSString *personTitle;
这是我的
.m
文件@interface PersonViewController ()
@property (weak, nonatomic) IBOutlet UILabel *titleView;
@end
@implementation PersonViewController
//stuff …
-(void)setPersonTitle:(NSString *)personTitle
{
[self.titleView setText:personTitle];// also self.titleView.text=personTitle
[self.titleView setNeedsDisplay];
NSLog(@"The title shoud match as %@ :: %@",personTitle,self.titleView.text);
}
-(NSString *)personTitle
{
return self.titleView.text;
}
//… more stuff
@end
日志记录显示该值是
(null)
的self.titleView.text
,而personTitle
打印适当的值。我记得做过同样的事情很多次,并且奏效了。知道为什么这次失败了吗?
更新我使用情节提要设置场景。我正在使用xcode-5和iOS-7
更新:我怎么称呼
用户单击一个按钮,导致推送
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSLog(@"enter prepare for segue.");
NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];
if ([segue.identifier isEqualToString:the_identifier_for_person]) {
NSLog(@"segue to person is progressing“);
if ([segue.destinationViewController isKindOfClass:[PersonViewController class]]) {
NSLog(@"segue to person destination is a match");
PersonViewController *aPerson = (PersonViewController *)segue.destinationViewController;
aPerson.personTitle=((MyItem*)self.allItems[indexPath.row]).title;
NSLog(@"segue to person is done");
}
}
}
最佳答案
您实际上调用了-(void)setPersonTitle:(NSString *)personTitle
方法吗?
似乎您没有正确调用它,这将导致标题为空。
在查看prepareForSeque之后,很明显您没有调用该方法。您实际上只是在更改名为personTitle的@property
。
在viewDidLoad中,您应该拥有它,以便self.titleView.text = self.personTitle;