这是我的.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;

08-16 14:46