【问题标题】:Passing data across tabs in tab bar controller在标签栏控制器中跨标签传递数据
【发布时间】:2015-02-20 00:21:57
【问题描述】:

试图在 UITab 控制器的选项卡之间传递数据。 我尝试过使用委托,但无法使其工作,还尝试实例化类的对象以将数据传递给它,但也无法正常工作。

我的设置是这样的...

我正在尝试将数据从测试表发送到收藏夹表,如箭头所示... 因为我正在尝试为用户实现一个收藏夹表格视图控制器来收藏他喜欢的表格单元格。

【问题讨论】:

  • 您最好的选择是使用核心数据,因为您的收藏不会是暂时的
  • 任何关于如何将信息从 tableView 传递到核心数据文件然后将其传输到收藏夹表视图的示例?
  • 是的,那里有教程,您必须从头开始构建它。创建实体等。只需谷歌它或阅读苹果文档。 raywenderlich.com/85578/first-core-data-app-using-swift
  • CoreData 非常繁重,如果您只需要保留简单数据,则可能不需要它。
  • @Paul.s 您是否有一个更简单的方法来存储数据而不是使用 coreData,因为我正在创建的应用程序似乎不需要 coreData,因为它是一个非常简单的应用程序。跨度>

标签: ios swift delegates uitabbarcontroller uistoryboardsegue


【解决方案1】:

我也推荐 Core Data,但如果你觉得它对你的项目来说太难了,你可以使用 Plist 文件作为你的最爱。

请注意,这是一个简单的示例:

-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{
    if ([favorites containsObject:items[indexPath.row]]) {
        [favorites removeObjectAtIndex:[favorites indexOfObject:items[indexPath.row]]];
    }
    else {
        [favorites addObject:items[indexPath.row]];
    }
    [self saveItems];
    [self.tableView reloadData];
}


- (void)loadItems {
    NSString *filePath = [self pathForItems];

    if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
        favorites = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
    } else {
        favorites = [NSMutableArray array];
    }
}

- (void)saveItems {

    NSString *filePath = [self pathForItems];
    [NSKeyedArchiver archiveRootObject:favorites toFile:filePath];
}

- (NSString *)pathForItems {

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documents = [paths lastObject];

    return [documents stringByAppendingPathComponent:@"favorites.plist"];
}

【讨论】:

    猜你喜欢
    • 2014-02-11
    • 2017-01-07
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    相关资源
    最近更新 更多