【问题标题】:Segue reseting title to original SWIFTSegue 将标题重置为原始 SWIFT
【发布时间】:2016-10-28 05:31:29
【问题描述】:

我在一个应用中有一个 UIViewcontroller 和 4 个表格视图。当我单击 UIViewcontroller 上的一个按钮时,它会转到一个名为“Beach”的 UItableviewcontioler。当用户单击表格的一个单元格时,它会返回 UIViewController 并将选定的单元格标题显示为按钮标题。我遇到的问题是当我单击另一个按钮到 tableview 然后单击单元格时,以前的按钮标题设置回以前的标题。

我完成上述操作的方法是在 viewcontrller 中添加一个名为“select beach”和“some String”的变量。选择单元格后,变量会更改,从而更改按钮标题。虽然,这样做的问题是,一旦视图再次加载(当连接到另一个表时)它会重置为“Some String”

我已经被这个问题困扰很久了!请帮忙!!

PS- 我正在使用 swift-2 和 Xcode7

【问题讨论】:

    标签: swift xcode swift2 xcode7 segue


    【解决方案1】:

    这是预期的行为,因为您尝试显示的字符串仅在您初始化运行时后才存储在内存中。您试图实现的目标需要将数据存储在设备上并从那里读取。

    对您来说可能且最简单的解决方案可能是使用NSUserDefaults

    let persistenceStoreKey = "MyStringKey"
    let stringToStore = "MyString"
    
    // Store data
    NSUserDefaults.standardUserDefaults().setObject(stringToStore, forKey: persistenceStoreKey)
    NSUserDefaults.standardUserDefaults().synchronize()
    
    // Get data
    let myString = NSUserDefaults.standardUserDefaults().stringForKey(persistenceStoreKey)
    

    请注意,NSUserDefaults 最适合存储简单的值。如果您想在设备上存储复杂的结构,请考虑使用 CoreData 或第三方(例如 Realm)进行数据库抽象。

    希望这会有所帮助。

    【讨论】:

    • 感谢您的回答,我想知道的是 store-string 和 persistenceStoreKey 变量都有什么作用,它们有什么区别。 @丹尼尔
    • 存储字符串基本上就是你要存储的字符串。键字符串是用于检索存储的字符串的值。基本上你可以使用相同的,但是如果你想存储一个包含一千个字符的字符串,那么使用更短的键来检索会更容易。
    • 我也想知道用户是否使用了 NSUserDefult。我尝试通过使用 --- if myString == ""{...} 来做到这一点,但是一旦视图加载,我仍然会重置值.. @Daniel
    • 我不明白您所说的“用户使用了 NSuserDefult”是什么意思?用户不使用任何东西,您是执行业务逻辑并制定程序和行为的人,您必须检查这些条件并相应地调整显示逻辑。如果您存储一个值,那么您必须检查是否需要它。如果您不存储值,则无法将其读回。我只是不明白你想要什么。
    猜你喜欢
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 2016-12-22
    相关资源
    最近更新 更多