关于一个 view controller 里的不同 UIActionSheet 使用同一个 delegate 的问题

2012-02-27 11:24:39 +08:00
 Livid
如果,在同一个 UIViewController 里,两个不同的按钮触发了两个不同的 UIActionSheet,然后这两个 UIActionSheet 的 delegate 都是这个 UIViewController 本身,那么大家会用什么样的办法在实现 delegate 的响应方法时区分不同的 UIActionSheet 呢?

或者,有更好的设计模式?
6266 次点击
所在节点    iDev
19 条回复
Livid
2012-02-27 11:28:27 +08:00
我目前在用的一种方式是,为这些不同的 UIActionSheet 分配不同的 tag,然后在 delegate 的响应方法里做判断。

所以我好奇是否还有其他更好的方法?
ydhydh
2012-02-27 11:43:26 +08:00
根据 buttonTitle ??

buttonTitleAtIndex
Fann
2012-02-27 11:45:41 +08:00
同样用 tag 来区分处理,不同的 UIAlertView 也是用 tag 区分。
fly2never
2012-02-27 11:48:18 +08:00
目前也是tag区分,还发现什么不好
Livid
2012-02-27 11:49:36 +08:00
那么,如果就是用 tag 来区分的话,在 tag 的编码上,大家是否有什么好的规则心得可以分享一下呢?
ydhydh
2012-02-27 11:59:25 +08:00
@Livid 汗,理解错误,以为最终目的是区分button呢,考虑下block?
froo
2012-02-27 12:01:47 +08:00
UIActionSheet *sheet1;
UIActionSheet *sheet2;

然后在Delegate中用if来判断
if (actionsheet == sheet1 ){}, if (actionsheet == sheet2 ){} ……

这样可读性应该好一些。
Kai
2012-02-27 12:07:26 +08:00
同 @froo 的方法,感觉清楚一些。
doskoi
2012-02-27 12:18:40 +08:00
TAG可以定义成enum

enum {
kAlertView,
kInfomationView,
kWarningView,
kErrorView
}

然后tag = Alertview.tag;

switch tag, case不同tag做处理
levey
2012-02-27 12:35:58 +08:00
要么用类的变量,要么用tag,我喜欢后者。as.tag = 0x2001
Fann
2012-02-27 13:02:05 +08:00
@doskoi +1.
linlinqi
2012-02-27 13:34:57 +08:00
我试过用actionSheet的title来判断——当它们的标题不一样的时候
sawyerzhang
2012-02-27 13:42:26 +08:00
同意 @froo, 直接在IB里面拉很方便的。
BB9z
2012-02-27 18:02:55 +08:00
喜欢 @doskoi 的方法。
lldong
2012-02-27 18:23:05 +08:00
支持用tag,而且tag是NSInteger类型,能保证存得下一个指针,有时可以利用这点保存一些和该view关联的信息。
avatasia
2012-02-28 17:51:09 +08:00
public class UIActionSheet
{
public static UIActionSheet Sheet1 = new UIActionSheet ("Sheet1");
public static UIActionSheet Sheet2 = new UIActionSheet ("Sheet2");
private UIActionSheet (string type)
{
}
}

UIController(UIActionSheet sheet)
{
}

随便写的
elden
2012-02-28 18:17:19 +08:00
Blocks
lex
2012-02-28 21:37:33 +08:00
Shane
2012-03-01 14:45:56 +08:00
@lex +1 这个不错

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/28245

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX