无法更新UIlabel文本

时间:2013-11-13 10:01:58

标签: iphone objective-c uilabel

在我的iPhone App中,我ViewController1包含一个名为UILabel的{​​{1}},我在故事板中添加了它的视图,我连接了这些插座。

我有另一个名为selectedBook的视图控制器,我将一些数据从ViewController2传递给ViewController2,而ViewController1的文本就是其中之一。

UILabel中,我编写了以下代码:

ViewController1.h中的

ViewController1

在ViewController1.m

@interface ViewController1 : UIViewController{

  IBOutlet UILabel *selectedBook;

  NSString *BookName;
  NSString *BookCover;
  NSString *BookAbout;
}

@property (nonatomic, retain) NSString *BookName;
@property (nonatomic, retain) NSString *BookCover;
@property (nonatomic, retain) NSString *BookAbout;

-(void) setTheSelectedBook:(NSString *)bookName bookCover:(NSString *)bookCover bookAbout:(NSString *)bookAbout userID:(int)userID;

-(void) setTheSelectedBook:(NSString *)bookName bookCover:(NSString *)bookCover bookAbout:(NSString *)bookAbout userID:(int)userID { BookName = bookName; BookCover = bookCover; BookAbout = bookAbout; NSLog(@"in setTheSelectedBook, BookName: %@ - BookCover: %@ - BookAbout: %@ - userID: %d", BookName, BookCover, BookAbout, userID); selectedBook.text = bookName; } 中,我编写了以下代码:

viewController2

我的数据正确传递,我在输出中看到它,但问题是ViewController1 *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Suggest"]; [viewController setTheSelectedBook:@"MybookName" bookCover:@"MyBookCover" bookAbout:@"MuBookAbout" userID:1]; 文本没有更新,这意味着这一行

UILabel

不起作用。

我尝试将其编写为selectedBook.text = bookName; ,这样可行。

我无法理解让selectedBook.text = @"someText";工作的缺失是什么?我希望有人在这个问题上帮助我。

提前致谢。

2 个答案:

答案 0 :(得分:0)

您的代码有点令人困惑。永远不要用大写字母开始你的变量。 BookName应为bookName_bookName。我认为这是其中一个问题。

如果您改为使用变量创建Book类:

@property (copy) NSString *name;
@property (copy) NSString *cover;
@property (copy) NSString *about;

然后在viewController1中通过实例化您的Book-class并设置它的变量来创建本书,然后您可以将Book-object发送到viewController2

这对你来说可能更容易。

如果您只想更改自己的代码,可以尝试使用:

在您的h文件中:

@property (copy) NSString *BookName;
@property (copy) NSString *BookCover;
@property (copy) NSString *BookAbout;

在你的m文件中:

-(void) setTheSelectedBook:(NSString *)bookName bookCover:(NSString *)bookCover bookAbout:(NSString *)bookAbout userID:(int)userID
{
    _BookName = bookName;
    _BookCover = bookCover;
    _BookAbout = bookAbout;

    NSLog(@"in setTheSelectedBook, BookName: %@ - BookCover: %@ - BookAbout: %@ - userID: %d", BookName, BookCover, BookAbout, userID);

    selectedBook.text = _BookName;
}

答案 1 :(得分:0)

我在这里看到的唯一解释是,bookName不是NSString。

将以下行添加到该方法:

NSLog(@"bookName class is %@", [bookName class]);
NSLog(@"selectedBook class is %@", [selectedBook class]);

XCode在运行时写入日志的内容是什么?

相关问题