2009-06-26 39 views
1

我正在使用被動視圖模式。用戶點擊一個新的帳戶按鈕。視圖使用無參數方法調用將責任分配給演示者。我的演示者需要提示用戶以獲取更多信息。我如何連接它?

問題是存在多個帳戶類型,因此用戶需要選擇他們想要創建的帳戶。我該如何解決這個問題?

  1. 從視圖中創建一個新表單,獲取所需信息並將其作爲屬性公開,以便演示者可以檢索它。 (這忽略了視圖不應該有任何邏輯的概念)
  2. 創建並使用演示者的新表單。 (這將主持人直接關聯到表單,忽略了MVP的整個點)
  3. 在其他地方創建新表單並將其作爲構造函數參數傳遞給主講者...或視圖。
  4. 忘記它併爲每個帳戶類型添加一個新按鈕。 (有多種帳戶類型,這會使用戶界面變得混亂,但這樣做很有用。)
  5. 我正在討論這種錯誤的方式,需要重新考慮我的設計。 (如果是這種情況,請向正確的方向微調)

回答

0

我的解決方案與我的預期不同。我將用戶點擊的按鈕更改爲DropDownMenuButton。然後我將一個帳戶類型的字符串列表傳遞給填充下拉菜單的視圖。我還爲下拉菜單項單擊事件創建了一個事件處理程序,該事件處理程序使用菜單項的名稱更新公共屬性,然後將其他所有內容委託給演示者。

演示者只需從顯示的屬性中獲取菜單項名稱,然後使用帳戶類型名稱作爲關鍵字在帳戶類型的專用字典中查找帳戶類型。

0

我不是MVP專家,但我會通過使用委託從視圖中獲取帳戶類型來處理此問題。演示者在視圖上調用委託,該視圖打開「選擇帳戶類型」表單並在用戶選擇帳戶類型並關閉表單時返回選定的帳戶類型。

1

我可能會創建另一個演示者視圖對來獲取帳戶類型。然後要麼

  • 您的主持人直接調用其他的主持人,以顯示新的形式或
  • 您的主持人問其對正確的帳戶類型的模型。該模型知道它應該詢問其他地方並調用「賬戶類型主持人」,甚至「賬戶類型模型」。

我想我會選擇第一個選項,除非您的演示者變得笨拙。

0

如果你正在談論一個簡單的界面來選擇一個賬戶類型,IMO取決於賬戶類型的數量。我只是爲每個帳戶添加新按鈕。但是,如果您有很多賬戶類型,我會在所有可能賬戶的列表中添加組合框,並且第一個(用戶首先看到的賬戶)是無效或未選擇的賬戶類型。我還會添加一些標籤,說「選擇要創建的帳戶類型」,然後按一下按鈕,將組合框中的值發送到模型。這樣,如果用戶只需點擊按鈕而不選擇帳戶類型,那麼模型將對該類型進行驗證,並將問題返回給視圖(並且視圖可以高亮顯示框或紅色文本或其他內容)。這將防止用戶錯過帳戶類型選擇。這種方法也會使單元測試更容易。

如果您正在討論每種賬戶類型需要填寫不同的信息,那麼您必須爲每個賬戶擁有不同的視圖和主持人。 (在用戶選擇帳戶類型後,這將是您需要的)

相關問題