0

我对iOS开发很陌生。

我在标签栏控制器的视图之间传递数据时遇到问题。

ViewController // First tab in the tab bar with a number pad for entering numbers into a label
SongController // Second tab embed within a Navigation Controller searches database for number entered in the first tab and displays lyrics in a web view

我试图将 ViewController 中标签的值传递给我的 SongController 中的方法。

ViewController.m

- (IBAction)goButton:(id)sender {

int songNum = [self.numberLabel.text intValue];

NSString *songNumber = [NSString stringWithFormat:@"%d",songNum];

if ([songNumber  isEqual: @"0"] || [songNumber isEqual: @""]) {

    [self.numberLabel setText:@""];

    UIAlertView *songNotFound = [[UIAlertView alloc]
                          initWithTitle: @"Sorry"
                          message: @"This song could not be found."
                          delegate: nil
                          cancelButtonTitle:@"OK"
                          otherButtonTitles:nil];
    [songNotFound show];
}
else
{        
    NSLog(@"%@", songNumber);

    SongController *sing = [[SongController alloc]init];

    sing.songNumberFromChooser = songNumber;

    self.tabBarController.selectedIndex = 1;
}

songFromNumberChooser中的 NSStringSongController没有被更改。我究竟做错了什么?

4

4 回答 4

0

看起来您实际上并没有在选项卡之间传递数据。最好的方法是使用委托模式。我会让你先阅读本教程。如果有些东西仍然无法正常工作,我们可以一起破解它。

于 2013-07-17T22:14:08.983 回答
0

这不起作用的原因是因为您正在创建 SongController 的新实例,而不是将值分配给您已经在标签栏控制器中实例化的 SongController。

而是尝试这个来获得你已经创建的那个:

SongController* sing = self.tabBarController.viewControllers[1];

sing.songNumberFromChooser = songNumber;

self.tabBarController.selectedIndex = 1;
于 2013-07-17T22:14:51.597 回答
0

您正在创建 的新实例SongController,而您应该做的是访问由 UITabBarController 管理的现有实例,并songNumberFromChooser在该控制器上进行设置。

于 2013-07-17T22:15:25.590 回答
0

我使用 NSUserDefaults 更改了 NSString 值。

- (IBAction)goButton:(id)sender {
   .....
}
else
{        
    [[NSUserDefaults standardUserDefaults] setObject:songNumber forKey:@"number"];
    [[NSUserDefaults standardUserDefaults]synchronize];

然后在 viewWillAppear 的方法中检索到SongController

- (void)viewWillAppear:(BOOL)animated
{
    songNumber = [[NSUserDefaults standardUserDefaults] objectForKey:@"number"];
}
于 2013-08-22T18:16:12.643 回答