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

2012 年 2 月 27 日
 Livid
如果,在同一个 UIViewController 里,两个不同的按钮触发了两个不同的 UIActionSheet,然后这两个 UIActionSheet 的 delegate 都是这个 UIViewController 本身,那么大家会用什么样的办法在实现 delegate 的响应方法时区分不同的 UIActionSheet 呢?

或者,有更好的设计模式?
7267 次点击
所在节点    iDev
19 条回复
Livid
2012 年 2 月 27 日
我目前在用的一种方式是,为这些不同的 UIActionSheet 分配不同的 tag,然后在 delegate 的响应方法里做判断。

所以我好奇是否还有其他更好的方法?
ydhydh
2012 年 2 月 27 日
根据 buttonTitle ??

buttonTitleAtIndex
Fann
2012 年 2 月 27 日
同样用 tag 来区分处理,不同的 UIAlertView 也是用 tag 区分。
fly2never
2012 年 2 月 27 日
目前也是tag区分,还发现什么不好
Livid
2012 年 2 月 27 日
那么,如果就是用 tag 来区分的话,在 tag 的编码上,大家是否有什么好的规则心得可以分享一下呢?
ydhydh
2012 年 2 月 27 日
@Livid 汗,理解错误,以为最终目的是区分button呢,考虑下block?
froo
2012 年 2 月 27 日
UIActionSheet *sheet1;
UIActionSheet *sheet2;

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

这样可读性应该好一些。
Kai
2012 年 2 月 27 日
同 @froo 的方法,感觉清楚一些。
doskoi
2012 年 2 月 27 日
TAG可以定义成enum

enum {
kAlertView,
kInfomationView,
kWarningView,
kErrorView
}

然后tag = Alertview.tag;

switch tag, case不同tag做处理
levey
2012 年 2 月 27 日
要么用类的变量,要么用tag,我喜欢后者。as.tag = 0x2001
Fann
2012 年 2 月 27 日
@doskoi +1.
linlinqi
2012 年 2 月 27 日
我试过用actionSheet的title来判断——当它们的标题不一样的时候
sawyerzhang
2012 年 2 月 27 日
同意 @froo, 直接在IB里面拉很方便的。
BB9z
2012 年 2 月 27 日
喜欢 @doskoi 的方法。
lldong
2012 年 2 月 27 日
支持用tag,而且tag是NSInteger类型,能保证存得下一个指针,有时可以利用这点保存一些和该view关联的信息。
avatasia
2012 年 2 月 28 日
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 年 2 月 28 日
Blocks
lex
2012 年 2 月 28 日
Shane
2012 年 3 月 1 日
@lex +1 这个不错

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

https://study.congcong.us/t/28245

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

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

© 2021 V2EX