All you need to do is prehook the OnGuildChanged function:
Lua Code:
ZO_PreHook(GUILD_ROSTER_MANAGER, "OnGuildIdChanged", function(self)
local newGuildId = self.guildId
-- do something
end)
That's what I do in GuildHallList and it works fine.
EVENT_GUILD_DATA_LOADED is only fired once at login and signals that the initial guild data has been loaded. Before that event, the guild screen won't show anything.