آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

استفاده از خاصیت کلیک شدن روی اجزای داخل tablaView نه خود سلول

Mr.AHN  8 سال پیش  8 سال پیش
0 0

باسلام. در آموزشها نحوه برنامه نویسی زمانی که روی سلول کلیک میشود، موجود است ولی اگر داخل سلول دکمه داشته باشیم نمیتوان از خاصیت کلیک استفاده کرد ولی بسیار محدود.

به عنوان مثال با تعریف اکشن برای دکمه داخل فایل سلول میتوانیم کارهای کوچکی انجام دهیم ولی نمیتوان از آنجا وارد ویو جدید شد. فرض کنید دکمه edit داخل یک سلول تعریف میکنیم. و اکشن برای آن مینویسیم. بدلیل اینکه اکشن ما داخی فایل سلول(اکستند شده از UITableView) هست دیگر به امکاناتی نظیر امکانات نمایش یا جابجا شدن بین سلولها دسترسی نداریم.

دوستان اگر در این زمینه تجربه ای دارند درمیان بگذارند ممنون میشوم.

 

 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
arman  8 سال پیش
0 0

سلام جناب. اگر منظورتون این هست که شما بصورت سفارشی حتما تو استوری برد یک سلول طراحی کردین (یعنی مثلا اومدین دکمه و سویچ لیبل خودتون درست کردین ) خوب دیگه نمیتونین درست ربط بدین اکشن ها را در  جدول. چون بالاخره کلاس هاشون از هم جدا هست.

فرض کنید شما میخواین محتویات یک سلول رو با استفاده از یک دکمه درون سلول تغییر بدید : خوب اینجاست که شما باید کنترل مورد نظر رو درون کلاس جدول پیکر بندی (چنانچه auto layout caonstraint  نیاز داشته باشه باید برنامه نویسیش کنی) و بعد پیوستش کنی به سلول اونوقت یک target براش معرفی کنی. وسپس با دریافت اندیس اون سلول انجامش بدید

ببخشید اگه یه کم گنگ به نظر میرسه

پاسخ به سوال 
hamidptb  8 سال پیش
0 0

اتفاقا چند روز پیش من هم همین مشکل رو داشتم که با کمک google و stackoverflow تونستم حلش کنم . اینم بگم از نسخه xcode و swift که آقای کاشی زاده روی سایت قرار داده استفاده میکنم . ( اینو گفتم ، چون توی نسخه های مختلف swift ، سینتکس متفاوتی داره )

اون چیزی که من میخواستم انجام بدم این بود که روی یک button که درون سلول collectionview ( یا tableview ) تعریف شده بود کلیک کنم و اتفاقی دیگه در viewcontroller دیگه صورت بگیره . و راهی که پیدا کردم استفاده از NSNotificationCenter بود .

کد زیر را در اکشن کالشکسن ویو تعریف کردم 

@IBAction func btnOpt1(sender: AnyObject) {

NSNotificationCenter.defaultCenter().postNotificationName("load", object: nil)

}



و کد زیر را هم در ویو کنترلر دیگر تعریف کردم :

به این صورت که کد زیر را در متد ویو دید لود اصلی :

NSNotificationCenter.defaultCenter().addObserver(self, selector: "loadList:", name: "load", object: nil)

و کد زیر را به صورت متدی مجزا در همین ویو کنترلر ( خارج از ویو دید لود :

func loadList (notification: NSNotification) {

print("")

}

که به جای پرینت میشه از هر دستور دگ استفاده کرد و با کلیک شدن بر روی باتن تعریف شده در سلول میشه در ویوکنترلر دیگه کار دیگه ای انجام داد


پاسخ به سوال 
Mr.AHN  8 سال پیش
0 0

سلام ممنون که وقت گذاشتید.خیلی عالی کار کرد. فقط اضافه کنم که فانکشن دوم در کنترل ویویی نوشته میشه که table داخلش هست. در واقع در viewdidload ویو کنترلر table تعریف میشه..
بسیار ممنونم واقعا بسیار کاربردی هست

0 0
خواهش میکنم . خوشحالم که تونستی مشکلت رو حل کنی . راجب فانکشن هم درست میگی ، باید در viewcontroller که tableview قرار داره استفاده بشه . البته تا اونجایی که من فهمیدم از NSNotification ها تو همه جا میشه استفاده کرد و مختص استفاده در tableview ها نیست و ی روش کلی برای دسترسی به viewconroller دیگر و تغییر اجزای اون از یک viewconroller دیگه هستش . (8 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .