添加两个后卫以准备segue功能

时间:2018-06-24 09:01:45

标签: swift xcode segue

我正在尝试使用三个分层的tableViews构建我的第一个应用程序。中间的VC具有两个保护功能,一个为保护功能做好准备。

drop_down= driver.find_element_by_id("select-size-bulk-asin")
drop_down.click()

actions = ActionChains(driver)
actions.send_keys(Keys.ARROW_DOWN)
actions.send_keys(Keys.ARROW_DOWN)
actions.send_keys(Keys.ENTER)
actions.perform()

就是这样。我可以解决这个问题,因为我的应用程序都使用了这两个函数,因为它只使用顶部的那个。

3 个答案:

答案 0 :(得分:1)

问题是,如果您想连接到TransactionViewController,则该函数已经返回,因为segue.destination不是AddMemberViewController。

相反,您应该给您的segues不同的标识符,并在output: [object Array]: ["A", "b", "d", "u", "s", "a", "l", "a", "m", " ", "A", "b", "u", "b", "a", "k", "a", "r", ",", "M"...] 0: "A" 1: "b" 2: "d" 3: "u" 4: "s" 5: "a" 6: "l" 7: "a" 8: "m" 9: " " 10: "A" 11: "b" 12: "u" 13: "b" 14: "a" 15: "k" 16: "a" 17: "r" 18: "," 19: "M" 20: "a" 21: "v" 22: "i" 23: "s" 24: "s" 25: "o" 26: "u" 27: "l" 28: "k" 29: "i" 30: "n" length: "31" 中要求它们。像这样:

public class Example
{
    /// <summary>
    /// Cannot modify this function.
    /// </summary>
    private void Save<T>(T data) where T : struct { }

    public void PlaceA(IToIntCompatible input)
    {
        typeof(Example)
            .GetMethod("Save")
            .MakeGenericMethod(input.GetType())
            .Invoke(this, new object[] { input });
    }

    public void PlaceB(IToIntCompatible input)
    {
        typeof(Example)
            .GetMethod("Save")
            .MakeGenericMethod(input.GetType())
            .Invoke(this, new object[] { input });
    }
}

答案 1 :(得分:0)

只要让守卫换成:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let destination = segue.destination as? AddMemberViewController {
       destination.club = club
    } else if let destination = segue.destination as? TransactionViewController, let selectedRow = self.tableViewMember.indexPathForSelectedRow?.row {
       destination.member = members[selectedRow]
    }     
}

答案 2 :(得分:0)

prepare(for被要求用于一个特定的segue,因此同时执行两个guard let不必要地昂贵。

通常,您要使用identifier语句检查segue的switch,用实际值替换文字标识符

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  switch segue.identifier {
     case "memberSegue":
        let destination = segue.destination as! AddMemberViewController
        destination.club = club
     case "transactionSegue":
        guard let selectedRow = self.tableViewMember.indexPathForSelectedRow?.row else { return }
        let destination = segue.destination as! TransactionViewController
        destination.member = members[selectedRow]
     default: break
  }
}