【问题标题】:Array, not refeshing table view数组,不刷新表视图
【发布时间】:2010-01-19 05:49:24
【问题描述】:

我有一个项目列表,在模态视图控制器中,我有一个有效的“新项目”屏幕,用户可以在其中为列表输入新内容。

列表是一个 UITableView,带有数据源 NSMutableArray。

这是MVC上的代码

-(IBAction)完成{

[RoutineTitle resignFirstResponder];
[RoutineInvolvment resignFirstResponder];

NSString *myString = RoutineTitle.text;
FirstViewController *FirstView = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];

NSLog(@"Log the String: %@", myString);

[FirstView.routines addObject:myString];

[selfdismissModalViewControllerAnimated:YES];

}

但是,当返回到常规屏幕时,它不会显示。我不确定它是否没有正确地将它添加到数组中,或者表视图是否需要刷新或什么。

任何帮助将不胜感激。 谢谢

山姆

【问题讨论】:

    标签: iphone uitableview nsmutablearray


    【解决方案1】:

    你应该在你的 `UITableView 上使用reloadData

    [myTableView reloadData];
    

    【讨论】:

      【解决方案2】:

      您的代码没有任何意义。你在 FirstViewController 中调用 -presentModalViewController 吗?为什么要在 -done 方法中实例化一个新的 FirstViewController?

      当您展示您的“新项目”视图控制器时,您需要做的是向它传递一个对您的表格视图和数据容器的引用。像这样的:

      NewItemViewController *controller = [[NewItemViewController alloc] init];
      [controller setTableView:firstViewTableView];
      [controller setDataContainer:routines];
      [self presentModalViewController:controller];
      [controller release];
      

      然后,在新项目视图控制器的 -done: 操作中,您可以将字符串添加到数据容器 (NSMutableArray),然后像这样重新加载表视图:

      - (IBAction)done:(id)sender;
      {
          NSString *myString = RoutineTitle.text;
          [dataContainer addObject:myString];
          [tableView reloadData];
      
          [self dismissModalViewController];
      }
      

      您的 NewItemViewController 将需要两个 @syntheisze 的 ivars,如下所示:

      @property (nonatomic, retain) UITableView *tableView;
      @property (nonatomic, retain) NSMutableArray *dataContainer;
      

      如果您需要澄清,请告诉我。

      【讨论】:

      • 嗨,马特,感谢您的回复。这部分 FirstViewController *FirstView = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];所以常规数组可以在两个类中使用。一个朋友告诉我这样做。你的独奏会做同样的事情吗?将字符串添加到数组中,然后重新加载数据?
      • setTableView: 是做什么的?我在':'之后放什么
      • -setTableView: 应该只引用调用-presentModalViewController 的视图控制器中的表视图。如果该视图控制器是 UITableViewController,那么您可以传递它 [self tableView]。如果没有,您需要为您在视图控制器中使用的 UITableView 创建一个插座。
      【解决方案3】:

      在您的-viewWillAppear:(BOOL)animated 方法中,调用super 后,您还应该调用[self.tableView reloadData];

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多