在我的iPhone App中,我ViewController1
包含一个名为UILabel
的{{1}},我在故事板中添加了它的视图,我连接了这些插座。
我有另一个名为selectedBook
的视图控制器,我将一些数据从ViewController2
传递给ViewController2
,而ViewController1
的文本就是其中之一。
在UILabel
中,我编写了以下代码:
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";
工作的缺失是什么?我希望有人在这个问题上帮助我。
提前致谢。
答案 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在运行时写入日志的内容是什么?